我正在尝试进行以下序列化:
[
{
"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和您的对象的结构。他们不匹配。看看那个小提琴,您应该明白原因。