我有这个JSON字符串值定义如下。我想要得到代码的值只有。我在互联网上尝试了解决方案,但我只得到一个空值。对此有什么想法吗?
JObject json = JObject.Parse(JSON string here);
var jsonData = json.SelectToken("serviceMessage.code"); <-- THIS RETURNS NULL
json:
{
"highestSeverity":"Error",
"serviceMessage":[
{
"code":"3004",
"severity":"Error",
"reason":"Reason here."
}
]
}
由于serviceMessage
是一个数组,假设您需要第一项,您可以简单地使用
var code = json["serviceMessage"][0]["code"];
实例:https://dotnetfiddle.net/2WgkcF
正如ADyson所指出的那样,您的serviceMessage
在数组中而不是对象中。所以,你必须把它当作一个集合。
- 检索集合
- 检索第一个元素 最后,可以得到
code
值JObject json = JObject.Parse(rawJson);
JArray messages = (JArray)json["serviceMessage"];
string code = messages.FirstOrDefault()?["code"]?.Value<string>()
基本上,您可以将其解析为模型并获得代码的值。例句:
public class ServiceMessage
{
public string code { get; set; }
public string severity { get; set; }
public string reason { get; set; }
}
public class Root{
public string highestSeverity { get; set; }
public List<ServiceMessage> serviceMessage { get; set; }
}
public class AnotherClass
{
public string MyFunction(string myJson){
var data = JsonConvert.DeserializeObject<Root>(myJson);
//Then you can access the value in the object
return data.serviceMessage.FirstOrDefault().code;
}
}