我有一个问题,但找不到任何相关文档。 JSON的字符串无效对象吗?
例如,您可以在任何浏览器中执行此操作: JS:
console.log(JSON.parse(JSON.stringify("asdf")));
Java(杰克逊):
ObjectMapper mapper = new ObjectMapper();
String string = mapper.writeValueAsString("asdf");
TextNode node = (TextNode)mapper.readTree(string);
System.out.println(node.getTextValue());
PHP:
echo json_decode(json_encode("asdf"));
但是,正如我所看到的,此解析器无法将字符串用作根对象:
另外,来自SWIFT documentation-
顶级对象是NSArray或NSDictionary。
根据这个问题,从您的控制器(端点)返回json格式的字符串是否无效?
example.com/notes/2/title
答案 0 :(得分:1)
根据https://jsonlint.com,“ asdf”是有效的JSON。一些解析器比其他解析器更严格。但是,您绝对不能将其用作其他任何数据的根,因为它只是一个字符串,而不是对象或数组。
话虽如此,如果您想要一个绝对的定义,请尝试阅读相关的RFC而不是特定编程语言的文档。据我所知,2017年12月的https://tools.ietf.org/html/rfc8259是最新的(在撰写此答案时)。
特别是https://tools.ietf.org/html/rfc8259#section-2说
JSON文本是令牌序列。令牌集包括六个
结构字符,字符串,数字和三个文字名称。JSON文本是序列化的值。请注意,某些先前的
JSON规范将JSON文本限制为对象或
数组。
以后
这是三个仅包含值的小JSON文本:
"Hello world!" 42 true
所以我假设提到的不同解析器正在实现规范的不同版本。