为什么以下代码不会在json
的值周围输出大括号?我认为JSON总是封装在括号内。
var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);`
生成的JSON现在是"\"some text into json\""
而不是{ "\"some text into json\"" }
答案 0 :(得分:5)
这是因为你只是序列化了一个字符串。因此序列化程序只返回序列化的字符串,在JSON中,它只是用引号括起来的字符串:
"some text"
如果序列化对象,JSON只会添加大括号:
{
"someStringProperty": "some text"
}
另请注意,输出中的反斜杠来自Visual Studio,它再次将整个字符串封装在引号中,并且还会转义字符串中的引号。 "真实"序列化字符串的值只使用简单的引号。因此,Visual Studio将显示以上JSON字符串,如下所示:
"\"some text\""
或
"{ \"someStringProperty\": \"some text\" }"
答案 1 :(得分:0)
JSON代表“JavaScript Object Notation”,意味着所有数据都表示为单个JavaScript对象(一个看起来像对象的JavaScript代码的字符串,更为正确)。
这就是为什么花括号不是必需的,然后需要它们来表示复杂的对象结构。 { "some text into json" }
(我省略引用转义以澄清)只是JavaScript编译器的简单语法错误!您可以拥有{ "key": "value", "other key": "other value" }
个对象,但没有值的键是错误。
因此"some text into json"
是字符串对象"some text into json"
唯一可能正确的JSON。