这是我得到的Json数据
{
"Data": {
"namelist": [
{
"name": "Elson Mon",
"Information": {
"Age": 45.0,
"Height": 168.7,
"Weight": 75.4,
"Birthdate": "1992-03-03"
},
"Married Status": "Single"
}
]
}
}
这是我的模特
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数据,但完全不知道如何将它分配到不同的变量中。
答案 0 :(得分:0)
你走在正确的道路上。
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);
}
答案 1 :(得分:0)
我是否正确地假设您的问题实际上是将结果分配给变量?
如果是这样的话,你不必费心去弄清楚它的类型(虽然这里非常明显 - 你将字符串反序列化为RootObject,所以如果这样做,你自然会有一个RootObject)。让编译器为您完成:
owner.removeTruck(truck);
ownerRepository.save(owner);
truckRepositry.delete(truck);
然后您可以将鼠标悬停在&#34; var&#34;看到类型。当你真的不知道你正在使用什么,或者类型是否像var jsonResponse = JsonConvert.DeserializeObject<RootObject>(json);
那样丑陋时,它会更加方便。
在这种情况下避免使用动态类型;总是喜欢把实际的类型或&#34; var&#34;。如果你将它存储在动态中,编译器不知道你得到了什么,所以如果你以不恰当的方式使用你的对象,它就不会发出任何警告,你&#39 ; ll面对运行时的后果。