我可以在json文件里使用注释吗? 如果是的话,怎么写?
当前回答
注释中包括您选择的注释;在解析或传输之前用一个分解符将其删除。
i 刚刚发布json.minify () , 它将评论和空白从json区块中分离出来, 并使它成为有效的json, 可以进行剖析。 所以, 您可以使用它 :
JSON.parse(JSON.minify(my_str));
所以我决定写一篇全面的博客文章, 说明为什么评论在json中有意义。
假设您正在使用 json 来保存配置文件, 您想要对这些文件进行注释。 请继续插入您想要的所有评论。 然后通过 jsmin 进行管道, 然后将它交给您的 Jsson 采集器 。 - Douglas crockford, 2012 。
希望这对不同意Json. minify()的原因的人会有帮助。
其他回答
是的,你可以有评论。 但我不建议任何上述理由。
我做了一些调查,我发现所有json都要求使用 json.parse 方法的方法。所以我找到了一个解决办法: 我们可以控制或修补猴子绕着json.parse。
注:仅用节点/js 测试;-)
var oldParse = JSON.parse;
JSON.parse = parse;
function parse(json){
json = json.replace(/\/\*.+\*\//, function(comment){
console.log("comment:", comment);
return "";
});
return oldParse(json)
}
json 文件 :
{
"test": 1
/* Hello, babe */
}
否认声明:你的保证无效
正如已经指出的,这个黑客利用了这个规格的实施。并非所有json的采样师都会理解这种json。特别是流的采样师会窒息。
这是一个有趣的好奇, 但你真的不应该使用它 任何东西。下面是最初的答案。
我发现一个小黑客 允许你在一个 Json 文件中发表评论 不影响解析 或改变数据 以任何方式代表。
似乎当声明对象文字时, 您可以用同一个键指定两个值, 而最后一个值优先 。 信不信由你, 事实证明json 采集器的工作方式是一样的 。 这样我们就可以用它来在源代码json 中创建评论, 这些评论不会出现在解析对象表示中 。
({a: 1, a: 2});
// => Object {a: 2}
Object.keys(JSON.parse('{"a": 1, "a": 2}')).length;
// => 1
如果我们运用这个技术, 你评论的json文件可能看起来是这样的:
{
"api_host" : "The hostname of your API server. You may also specify the port.",
"api_host" : "hodorhodor.com",
"retry_interval" : "The interval in seconds between retrying failed API calls",
"retry_interval" : 10,
"auth_token" : "The authentication token. It is available in your developer dashboard under 'Settings'",
"auth_token" : "5ad0eb93697215bc0d48a7b69aa6fb8b",
"favorite_numbers": "An array containing my all-time favorite numbers",
"favorite_numbers": [19, 13, 53]
}
上面的代码是有效的json。 如果你分析它, 你会得到这样的物体:
{
"api_host": "hodorhodor.com",
"retry_interval": 10,
"auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b",
"favorite_numbers": [19,13,53]
}
意思是评论没有痕迹 也不会有怪异的副作用
快乐的黑客!
将json 项切为部分,我加上了“微调评论”行:
{
"#############################" : "Part1",
"data1" : "value1",
"data2" : "value2",
"#############################" : "Part2",
"data4" : "value3",
"data3" : "value4"
}
我们用脱衣配对来做我们的项目。 它支持一些东西,比如:
/*
* Description
*/
{
// rainbows
"unicorn": /* ❤ */ "cake"
}
简单的 npm 安装 -- save 条形引言,用于安装和使用它,例如:
var strip_json_comments = require('strip-json-comments')
var json = '{/*rainbows*/"unicorn":"cake"}';
JSON.parse(strip_json_comments(json));
//=> {unicorn: 'cake'}
注释中包括您选择的注释;在解析或传输之前用一个分解符将其删除。
i 刚刚发布json.minify () , 它将评论和空白从json区块中分离出来, 并使它成为有效的json, 可以进行剖析。 所以, 您可以使用它 :
JSON.parse(JSON.minify(my_str));
所以我决定写一篇全面的博客文章, 说明为什么评论在json中有意义。
假设您正在使用 json 来保存配置文件, 您想要对这些文件进行注释。 请继续插入您想要的所有评论。 然后通过 jsmin 进行管道, 然后将它交给您的 Jsson 采集器 。 - Douglas crockford, 2012 。
希望这对不同意Json. minify()的原因的人会有帮助。
推荐文章
- 在VS Code中禁用“Comments are not allowed In JSON”错误
- 如何在Kotlin解析JSON ?
- JSON文件的蒙古导入
- 如何用jQuery / JavaScript解析JSON数据?
- jQuery在请求体中发布有效的json
- 将JSON显示为HTML
- Swift:理解// MARK
- 在JSON键名中哪些字符是有效的/无效的?
- 如何JSON序列化集?
- 如何检查JSON键是否存在?
- 在构建中编写注释的语法是什么?gradle文件?
- 将对象序列化为JSON
- node.js TypeError:路径必须是绝对路径或指定根路径到res.sendFile[解析JSON失败]
- Python json。loads显示ValueError:额外数据
- JSON省略了Infinity和NaN;JSON在ECMAScript中的状态?