Json没有将元素的子数组映射到我的对象
本文关键字:映射 数组 我的 对象 元素 Json | 更新日期: 2023-09-27 18:29:47
我们下载了一个json序列化程序和反序列化程序,它读取配置文件对象find,但它没有放在列表中的Client项中。这是json
{"Profile": [{
"Name":"Joe",
"Last :"Doe",
"Client":
{
"ClientId":"1",
"Product":"Apple",
"Message":"Peter likes apples"
},
"Date":"2012-02-14"
}]}
所以在我的个人资料课上,我有
public class Profile
{
public string Name {get; set;}
public string Last {get; set;}
public List<Client> Client {get; set;}
public DateTime dDate {get; set;}
public Profile()
{
}
public Profile BuildEntity()
{
Profile profile = new Profile();
profile.Name = this.Name;
profile.Last = this.LastName;
profile.Client = this.client;
profile.dDate = this.dDate;
return dDate;
}
}
现在,当我调试时,除了列表之外,所有项目都有值。有人知道可能是什么吗?
注意:这将发布到我们的Profile.asmx web服务
问候
您将Client声明为:
public List<Client> Client {get; set;}
但你的数据看起来是这样的:
"Client":
{
"ClientId":"1",
"Product":"Apple",
"Message":"Peter likes apples"
}
我认为预期的数据更像:
"Client":
[{
"ClientId":"1",
"Product":"Apple",
"Message":"Peter likes apples"
}]
反序列化可能需要一个对象数组,而不仅仅是一个对象。
也许客户端应该是一个数组,而不是一个对象,因为在建模时它是一个List。试试这个:
"Client":
[{
"ClientId":"1",
"Product":"Apple",
"Message":"Peter likes apples"
}],
将来我建议使用LinqPad进行测试,然后实现。下面是工作代码示例。
string杰森=@"{"配置文件":[{"姓名":"乔","Last":"Doe","客户端":{"ClientId":"1","产品":"苹果","消息":"彼得喜欢苹果"},"日期":"2012-02-14"}]}";void Main(){var jason=JsonConvert.SerializeObject(Container.Instance());JASON.Dump();杰森。转储();JsonConvert.DescializeObject(JASON).Dump();}//在此处定义其他方法和类类容器{public Container(){Profile=新列表{};}公共列表配置文件{get;set;}公共静态容器实例(){var c=new Container();c.简介.Add(新建配置文件{Name="Joe",Last="Doe",日期="2012-02-14",客户端=新客户端{ClientId=1,产品="苹果",消息="Peter喜欢苹果"}});返回c;}}类客户端{public int ClientId{get;set;}公共字符串乘积{get;set;}公共字符串消息{get;set;}}类配置文件{公共字符串名称{get;set;}公共字符串Last{get;set;}公共客户端客户端{get;set;}公共字符串日期{get;set;}公共配置文件(){}}