反序列化嵌套的JSON数据并分配到变量
{
"Data": {
"namelist": [
{
"name": "Elson Mon",
"Information": {
"Age": 45.0,
"Height": 168.7,
"Weight": 75.4,
"Birthdate": "1992-03-03"
},
"Married Status": "Single"
}
]
}
}
这里是我的模型JSON数据
public class Information
{
public double Age { get; set; }
public double Height { get; set; }
public double Weight { get; set; }
public string Birthdate { get; set; }
}
public class Namelist
{
public string name { get; set; }
public Information Information { get; set; }
public string MarriedStatus { get; set; }
}
public class Data
{
public List<Namelist> namelist { get; set; }
}
public class RootObject
{
public Data Data { get; set; }
}
我如何反序列化JSON格式字符串并分配到变量? 我试图使用
dynamic jsonResponse = JsonConvert.DeserializeObject<RootObject>(json);
反序列化JSON数据,但对如何将其分配到不同的变量完全不知道。
我说得对不对在假设你的问题实际上是将结果分配给一个变量?如果是这种情况,你不需要费心计算出这个类型(虽然这里很明显 - 你将一个字符串反序列化成RootObject,所以如果这样做的话,你自然会有一个RootObject)。让编译器为你做:
var jsonResponse = JsonConvert.DeserializeObject<RootObject>(json);
然后你可以将鼠标悬停在“var”上来查看类型。当你真的不知道你在做什么或者该类型是不是像IEnumerable<KeyValuePair<int, List<string>>>
那样丑陋的时候,它会更方便。
避免在这种情况下的动态类型;总是喜欢把实际的类型或“var”。如果你将它存储在一个动态变量中,编译器不知道你得到了什么,所以如果你以不恰当的方式使用你的对象,它不会发出任何警告,你将面临运行时间的后果。
雅,你的假设是正确的,在我反序列化Json文件之后,我能够像“名字”一样分配到一个可变数据和“埃尔森星期一”到另一个变量吗? –
我已经得到了我想要的答案,它工作!谢谢 ! –
你在正确的道路上。
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
例子:
public static void Main(string[] args)
{
string json = @"{
'Data': {
'namelist': [
{
'name': 'Elson Mon',
'Information': {
'Age': 45.0,
'Height': 168.7,
'Weight': 75.4,
'Birthdate': '1992-03-03'
},
'Married Status': 'Single'
}
]
}
}";
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
}
'RootObject jsonResponse = JsonConvert.DeserializeObject(json);'? –
AgentFire