[英]JSON newtonsoft deserialization
我必须解析以下格式的Web API。 请注意,我无法更改JSON的格式。 它将始终以以下格式出现:
{
"somethingone": "abc",
"somethingtwo": "abcde-1234",
"information": {
"report": [{
"a": "1",
"b": "2",
"c": "3"
},
{
"a1": "1a",
"b2": "2a",
"c3": "3a"
}, {
"a1": "1b",
"b2": "2b",
"c3": "3b"
},
]
}
}
当我尝试在Newtonsoft中解析它时,出现以下错误消息:
无法将当前json对象反序列化,因为(eg {“ name”:“ value”})成为类型,因为该类型需要json数组(例如[1,2,3])才能正确反序列化。
我已经尝试解决这个问题好几天了,但无法解决。
在此问题中,您可能会将json解析为类的列表,例如List<ClassName>
,则应排除List <>,因为传入的json中只有一个主对象
如果report
数组中的项目不是固定的,则意味着这些项目的计数从1到N,则声明每个项目的属性很困难,并且您的类对象结构变得繁琐。
因此,您需要收集“ Dictionary
所有项目,以便它可以分析从1到N的项目。
这些类对象适合您的json。
class RootObj
{
public string somethingone { get; set; }
public string somethingtwo { get; set; }
public Information information { get; set; }
}
class Information
{
public Dictionary<string, string>[] report { get; set; }
}
你可以反序列化像
RootObj mainObj = JsonConvert.DeserializeObject<RootObj>(json);
Console.WriteLine("somethingone: " + mainObj.somethingone);
Console.WriteLine("somethingtwo: " + mainObj.somethingtwo);
foreach (Dictionary<string, string> report in mainObj.information.report)
{
foreach (KeyValuePair<string, string> item in report)
{
string key = item.Key;
string value = item.Value;
Console.WriteLine(key + ": " + value);
}
}
Console.ReadLine();
输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.