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服务

问候

Json没有将元素的子数组映射到我的对象

您将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;}公共配置文件(){}}