C# 为什么我的JSON中没有添加花括号?

C# 为什么我的JSON中没有添加花括号?,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,为什么下面的代码没有在json的值周围输出花括号?我认为JSON总是封装在括号内 var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);` 生成的JSON现在是“\”一些文本转换成JSON\”,而不是{“\”一些文本转换成JSON\”},这是因为您只是序列化了一个字符串。因此,序列化程序只返回序列化的字符串,在JSON中,它只是引号中的字符串: "some text" JSON仅在

为什么下面的代码没有在
json
的值周围输出花括号?我认为JSON总是封装在括号内

var json = JsonConvert.SerializeObject("some text into json", Formatting.Indented);`

生成的JSON现在是
“\”一些文本转换成JSON\”
,而不是
{“\”一些文本转换成JSON\”}

,这是因为您只是序列化了一个字符串。因此,序列化程序只返回序列化的字符串,在JSON中,它只是引号中的字符串:

"some text"
JSON仅在序列化对象时添加大括号:

{
    "someStringProperty": "some text"
}
还请注意,输出中的反斜杠来自VisualStudio,它再次将整个字符串封装在引号中,并在字符串中转义引号。序列化字符串的“实”值只使用简单的引号。因此,Visual Studio将显示上述JSON字符串,如下所示:

"\"some text\""

代表“JavaScript对象表示法”,这意味着所有数据都表示为单个JavaScript对象(更准确地说,是一个看起来像对象的JavaScript代码的字符串)

这就是为什么花括号不是强制性的,它们是表示复杂对象结构所必需的<代码>{“将一些文本转换为json”}(为了清晰起见,我省略了转义)对于JavaScript编译器来说只是一个简单的语法错误!您可以有
{“key”:“value”,“other key”:“other value”}
对象,但是没有值的键是错误的


因此
“some text into json”
是字符串对象
“some text into json”
唯一可能正确的json,为什么会出现否决票?这是一个基本但非常清楚的问题!没有给我机会改善问题的评论的反对票怎么了?“这个问题非常简单,因为我看不出有什么理由夸大其词。”菲尔伯特说,我在谷歌上的搜索词,我希望在1分钟内找到答案。我没有找到任何,因此提出了这个问题。如果我知道答案,我仍然会将问题与答案一起发布,这样其他人将来会发现它更容易。@JimAho重要的是参考研究成果,以站出来反对所有帮助吸血鬼-有一个很好的答案,2个重新投票,没有失去这个问题的危险。你想要的结果
{“将某些文本转换为json”}
是无效的json。将其上载到,您将收到错误。有关有效json的示例,请参阅。
"{ \"someStringProperty\": \"some text\" }"