我正在尝试反序列化以下内容:
[
{
"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解析上面的示例吗?
答案 0 :(得分:3)
我想知道你从哪里得到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);
答案 1 :(得分:-2)
这是你的解决方案:
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和你的对象的结构。他们不匹配。看看那个小提琴你应该明白为什么。