我有一个Json字符串,它具有如下对象A,B,C:
[{
"attr 1" : "val 1",
"attr 2" : "val 2",
"B": {
"attr 1": "val 1"
"attr 2": "val 2"
"C": {
"attr 1": "val 1"
"attr 2": "val 2"
}
}
}]
我有问题: 1.如何分割字符串以获取3类数据? 2.如何获取A类数据? 3.如何获取B类数据? 4.如何获取C类的数据?
答案 0 :(得分:3)
您发布的JSON不太有效,因为它缺少一些逗号,但已修复:
[{
"attr 1": "val 1",
"attr 2": "val 2",
"B": {
"attr 1": "val 1",
"attr 2": "val 2",
"C": {
"attr 1": "val 1",
"attr 2": "val 2"
}
}
}
]
如果您使用的是Visual Studio,则可以在新文件中编辑>选择性粘贴> JSON作为类粘贴,这将为您提供:
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public string Attr1 { get; set; }
public string Attr2 { get; set; }
public B B { get; set; }
}
public class B
{
public string Attr1 { get; set; }
public string Attr2 { get; set; }
public C C { get; set; }
}
public class C
{
public string Attr1 { get; set; }
public string Attr2 { get; set; }
}
您可以删除类Rootobject
,就像您尝试反序列化该类一样-由于没有名为Property1
的属性JSON密钥,它将失败。
然后您可以使用https://www.newtonsoft.com/json
将JSON字符串反序列化为新对象:
var obj = JsonConvert.DeserializeObject<Class1[]>(json);
var classB = obj[0].B;
var classC = obj[0].B.C;
我建议将Class1
重命名为更有意义的内容!
编辑:您还需要使用[JsonProperty]
属性修饰类属性,因为JSON键包含空格,即:
public class Class1
{
[JsonProperty("attr 1")]
public string Attr1 { get; set; }
[JsonProperty("attr 2")]
public string Attr2 { get; set; }
public B B { get; set; }
}
以此类推...