杰森带着空间回来了
本文关键字:空间 回来了 | 更新日期: 2023-09-27 18:36:48
>我正在尝试检查 json 中是否有某个属性。实际上我可以通过以下方式做到这一点:
var container = (JContainer)JsonConvert.DeserializeObject(responseText);
var x = container.ToString(Formatting.None);
var message = container["text"];
现在变量responseText
返回为:
{[
{
"trace": {
"details": {
"data": "[29-02-2016 17:37:32.931751]",
"type": "[info]",
"text": "[Done.]"
},
"context": {
"context": [
[
{
"ID": "John Dillinger"
}
]
]
}
}
}
]}
在x
变量中,我删除了空格,最终结果是:
"[{'"trace'":{'"details'":{'"data'":'"[29-02-2016 17:37:32.931751]'",'"type'":'"[info]'",'"text'":'"[Done.]'"},'"context'":{'"context'":[[{'"ID'":'"John Dillinger'"}]]}}}]"
现在,如果找不到密钥,我会得到null
:
if (message == null)
{
return responseText;
}
问题是我在message
变量上执行条件,检查container
(未格式化)中是否存在该属性,问题是我得到此异常:
{"访问了具有无效键值的 JArray 值:"文本"。预期的 Int32 数组索引。
但是如果我用斜杠的第二个 JSON 替换container
,一切都很好用。现在我的问题是我无法执行var message= x["text"];
因为x
是一个字符串。那么我如何删除 json 中的空格并检查是否包含 text
键呢?
看起来当你
删除空格时,你也改变了第一个括号的顺序 在第一个示例中,您的第一个括号是{[
,在第二个示例中,它们是[{
在 json 中,排序会有所不同。 {}
表示对象,[]
表示数组。 [{"data":"value"}]
是合法的,因为您说您有一个对象的数组。 {["value"]}
是不合法的,因为您的对象没有数组的名称。法律版本将是{ "data":["value"] }
这是一个方便的网络工具来验证您的 JSON 语法