为什么以下代码未在json
的值周围输出卷曲括号?我以为Json总是被封装在支架内。
var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);`
现在的JSON现在是""some text into json""
而不是{ ""some text into json"" }
这是因为您只是序列化了一个字符串。因此,序列化器仅返回序列化字符串,在JSON中,它只是引号中包含的字符串:
"some text"
JSON仅在序列化对象时添加卷曲括号:
{
"someStringProperty": "some text"
}
还要注意,输出中的后斜线是由于视觉工作室再次将整个字符串封装在引号中,并且还逃脱了字符串中的引号。序列化字符串的"真实"值只使用简单的引号。因此,Visual Studio将显示上述JSON字符串如下:
""some text""
或
"{ "someStringProperty": "some text" }"
JSON代表" JavaScript对象表示法",这意味着所有数据均表示为单个JavaScript对象(看起来像对象的JavaScript代码的字符串更正确)。
这就是为什么卷曲括号不是强制性的原因,因此需要它们来表示复杂的对象结构。{ "some text into json" }
(我省略引用secave for Clariness)只是JavaScript编译器的普通语法错误!您可以拥有{ "key": "value", "other key": "other value" }
对象,但是没有值的键是错误。
因此,"some text into json"
是字符串对象"some text into json"
的唯一可能的正确JSON。