我能否在以下发言中发表一些意见?Json Json (Json Json) (Json Json Json) (Json Json) Json Json (Json Json) Json (Json) Json (Json) Json (Json) Json (Json) Json (Json) Json (Json) Json(Json) Json (Json) Json (Json) Json(Json) Json (Json) Json如果有,如何处理?
当前回答
原为:JSON发明家说:
JSON没有评论。 JSON 编码器必须输入输出评论。 JSON 编码器可能接受和忽略评论。
功用jjq jq包含一个解码器, 它允许“ #” 式的评论, 所以jq 是一种工具, 可以与 JSON 与注释文件一起使用, 只要这些文件被当作“ jq 程序” 处理, 而不是作为 JSON 文件处理 。 例如 :
$ jq -ncf <(echo $'[1, # one\n2 ] # two')
[1,2]
更重要的是,jq可以处理庞大的JSON与评论文件作为程序;这可以用众所周知的JSON文件加以说明:
$ ls -l JEOPARDY_QUESTIONS1.json
-rw-r--r-- 2 xyzzy staff 55554625 May 12 2016 JEOPARDY_QUESTIONS1.json
$ jq -nf JEOPARDY_QUESTIONS1.json | jq length
216930
其他回答
JSON并不是一个框架化协议。它是一个语言自由格式。因此没有为 JSON 定义评论格式。
正如许多人所暗示的那样,有一些把戏,例如重复键或特定键。_comment
你可以使用它,由你决定
如果您的上下文是 NOde.js 配置, 您可以考虑 JavaScript 通过module.exports
作为JSON的替代:
module.exports = {
"key": "value",
// And with comments!
"key2": "value2"
};
缩略require
语法将保持不变 。 作为 JavaScript, 文件扩展名应该是.js
.
在JSON的输出之前,我需要将评论用于调试目的。所以我把调试信息放进HTTP 信头为了避免客户被打破:
header("My-Json-Comment: Yes, I know it's a workaround ;-) ");
叹气,为什么不只添加字段,例如:
{
"note1" : "This demonstrates the provision of annotations within a JSON file",
"field1" : 12,
"field2" : "some text",
"note2" : "Add more annotations as necessary"
}
只要确保你的"笔记本"名字 不要与任何真正的田地冲突。
如果您正在使用 PHP, 您可以使用此函数搜索并删除 JSON 字符串中的 / / / * 键入批注, 然后将其解析成对象/ 数组 :
function json_clean_decode($json, $assoc = true, $depth = 512, $options = 0) {
// search and remove comments like /* */ and //
$json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#", '', $json);
if(version_compare(phpversion(), '5.4.0', '>=')) {
$json = json_decode($json, $assoc, $depth, $options);
}
elseif(version_compare(phpversion(), '5.3.0', '>=')) {
$json = json_decode($json, $assoc, $depth);
}
else {
$json = json_decode($json, $assoc);
}
return $json;
}
希望这有帮助!