json.net无法弄清楚



我正在尝试进行以下序列化:

[
   {
      "items":[
         {
            "b":1,
            "Q":"data"
         },
         {
            "b":2,
            "Q":"more data"
         }
      ]
   },
   {
      "seconds_ago":1
   }
]

我尝试使用

将其估算为C#对象
   public class Rootobject
    {
        public Class1[] Property1 { get; set; }
    }
    public class Class1
    {
        public Item[] items { get; set; }
        public int seconds_ago { get; set; }
    }
    public class Item
    {
        public int b { get; set; }
        public string Q { get; set; }
    }
public void test()
{
    Rootobject deserializedObject = JsonConvert.DeserializeObject<Rootobject>(json);
}

但是我抛出了各种错误,无论我尝试什么,用户错误明显。

谁能使用json.net?

我想知道您从哪里得到JSON,或者您只是自己想出它。它并不是真正可以使用的最佳JSON,但是由于这是您的示例,我向您展示了如何使用映射模型对其进行测试。

映射

正确的类(对于您提供的JSON)进行映射将看起来像这样的::

public class Item
{
    public int b { get; set; }
    public string Q { get; set; }
}
public class Rootobject
{
    public List<Item> items { get; set; }
    public int? seconds_ago { get; set; }
}

挑剔:

为了进行挑战,您将List<Rootobject>用作类型,因为有一个根对象(因为它是一个数组)[]

List<Rootobject> deserializedList = JsonConvert.DeserializeObject<List<Rootobject>>(json);

这是您的解决方案:

using System;
using Newtonsoft.Json;
public class Program
{
    public static void Main()
    {
        var data = @"{
    'Property1': [{
        'items': [{
            'b': 1,
            'Q': 'data'
        }, {
            'b': 2,
            'Q': 'more data'
        }],
        'seconds_ago': 1
    }]
}";
        Rootobject deserializedObject = JsonConvert.DeserializeObject<Rootobject>(data);
        Console.WriteLine(deserializedObject.Property1[0].items[0].b);
        Console.WriteLine(deserializedObject.Property1[0].items[0].Q);
        Console.WriteLine(deserializedObject.Property1[0].items[1].b);
        Console.WriteLine(deserializedObject.Property1[0].items[1].Q);
        Console.WriteLine(deserializedObject.Property1[0].seconds_ago);
    }
}
public class Rootobject
    {
        public Class1[] Property1 { get; set; }
    }
    public class Class1
    {
        public Item[] items { get; set; }
        public int seconds_ago { get; set; }
    }
    public class Item
    {
        public int b { get; set; }
        public string Q { get; set; }
    }

您可以在这里尝试:https://dotnetfiddle.net/33zpyx

问题主要是您的JSON和您的对象的结构。他们不匹配。看看那个小提琴,您应该明白原因。

相关内容

  • 没有找到相关文章

最新更新