当我试图用json.net对我的json进行启用时,它为我的json数组提供了无效的值。
我有简单的json:
[
{
"PhaseName": "Start",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "In Progress",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "Finish",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
}
]
和我的代码中的通讯类:
public class Advices
{
public string PhaseName { get; set; }
public List<string> AdvicesList { get; set; }
}
和一个代表一系列建议对象的可靠性:
public class MyAdvices
{
private Advices[] MyAdvicesArrays;
....
所以当我试图这样对我的json进行挑选时:
MyAdvicesArrays= JsonConvert.DeserializeObject<Advices[]>(sMyJSON));
json.net在我的MyadVicesArrays数组中每个对象的"阶段名称"属性填充具有正确的值,但每个对象的建议数组无效:如果您在运行时检查它们,则"无法评估表达式"。我不明白。我做错了什么?
您的json
根据实体无效。
在您的类型中,将AdvicesList
更改为Advices
。
public List<string> AdvicesList { get; set; }
将其更改为
public List<string> Advices { get; set; }
不,你的json和班级一样不正确。
首先将您的JSON更改为:
{
phases:[
{
"PhaseName": "Start",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "In Progress",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
},
{
"PhaseName": "Finish",
"Advices": ["Lorem ipsum dolor",
"Lorem ipsum dolor",
"Lorem ipsum dolor"]
}
]
}
在您没有正确声明JSON对象之前,请注意。您也需要数组的属性。
现在您需要两个类:
public class AnythinYouWant{
public List<Phase> Phases{get;set;}
}
public class Phase{
public string PhaseName{get;set;}
public List<string> Advices{get;set;}
}
请注意,顶级JSON对象的头等舱是如何的。这个名字可以是您想要的。但是任何属性都需要匹配名称。
我要做的工作就是更改Advices
类的定义:
public class Advice
{
public string PhaseName { get; set; }
public List<string> Advices { get; set; }
}
我将类名称更改为Advice
,而AdvicesList
属性更改为Advices
。