【发布时间】:2016-02-29 15:27:21
【问题描述】:
我有这个 json:
{
"status": true,
"Text": "Example"
}
但有时这可能会改变,所以我需要检查传递的响应中是否有索引Text,代码:
var container = (JContainer)JsonConvert.DeserializeObject(response);
var message = container["Text"];
问题是我在消息上收到此异常(如果 json 不包含密钥 text):
{"使用无效键值访问的 JArray 值:\"Text\"。需要 Int32 数组索引。"}
如何避免这个问题?
【问题讨论】:
-
准确的说是检查属性是否存在,然后才访问。
-
@Christoph 是的,我需要检查该属性是否存在,您链接的不是 c# 的 javascript 问题
-
我的错。那就看看这个贴吧。转换为 JObject 并迭代 JObject.Children()。这对你有用吗?stackoverflow.com/questions/13652983/…
-
@Christoph 我发现了问题。返回的 json(导致问题的原因)包含多行,如下所示:
{"trace":{"details":{"[date]":"[29-02-2016 17:07:29.773750]","[level]":"[info]","[message]":"[System Done.]"},"context":[[{"ID":"John Dillinger"}]]}}{"trace":{"details":{"[date]":"[29-02-2016 17:07:29.773750]","[level]":"[info]","[message]":"[System Done.]"},"context":[[{"ID":"John Dillinger"}]]}}事实上,我看到如果我只放置 json 的一个“跟踪”代码工作正常,而不是多行我得到了错误。跨度>