我可以在json文件里使用注释吗? 如果是的话,怎么写?
当前回答
否认声明:你的保证无效
正如已经指出的,这个黑客利用了这个规格的实施。并非所有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]
}
意思是评论没有痕迹 也不会有怪异的副作用
快乐的黑客!
其他回答
我真的很喜欢 @eli ' s 方法, 有超过 30 个答案, 但没有人提到列表( array) 。 所以使用 @eli ' s 方法, 我们可以做类似的事情:
"part_of_speech": {
"__comment": [
"@param {String} type - the following types can be used: ",
"NOUN, VERB, ADVERB, ADJECTIVE, PRONOUN, PREPOSITION",
"CONJUNCTION, INTERJECTION, NUMERAL, PARTICLE, PHRASE",
"@param {String} type_free_form - is optional, can be empty string",
"@param {String} description - is optional, can be empty string",
"@param {String} source - is optional, can be empty string"
],
"type": "NOUN",
"type_free_form": "noun",
"description": "",
"source": "https://google.com",
"noun_class": {
"__comment": [
"@param {String} noun_class - the following types can be used: ",
"1_class, 2_class, 3_class, 4_class, 5_class, 6_class"
],
"noun_class": "4_class"
}
}
json 规格不支持评论, // 或/ * * / 样式。
但一些 Json 剖析图书馆和助手支持它们。
类似 :
json5 视觉演播室 代码评论
json不支持本地的评论, 但您可以自己做解码器或至少预处理器来删除评论, 这完全没问题(只要您只是忽略评论, 不使用它们来指导您的应用程序如何处理json数据 ) 。
json 没有评论。 json 编码器不能输出评论。 json 编码器可以接受和忽略评论。
评论不应被用来传递任何有意义的信息。 这就是json的目的。
参考:杜格拉斯·克罗福德,Json Spec的作者。
我们用脱衣配对来做我们的项目。 它支持一些东西,比如:
/*
* 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'}
免责声明:这太愚蠢了
实际上有一种方式可以添加评论,并且不超出规格(不需要额外的分析师)。 它不会在不作任何区分的情况下产生人类可读的评论。
您可滥用下列手段:
允许在任何象征性之前或之后使用微小的白色空间。 白空间是以下一个或多个代码点的任何序列: 字符制表( u+0009)、 线性种子( u+000a)、 运输返回( u+000d) 和空间( u+0020)。
黑客方式, 您可以滥用此选项添加注释 。 例如 : 开始并用标签结束您的评论 。 在 base 3 编码注释, 并使用其他空白字符来代表它们 。 例如 。
010212 010202 011000 011000 011010 001012 010122 010121 011021 010202 001012 011022 010212 011020 010202 010202
(在Ascii中为3号基数你好),但不使用0个空间,而是用于1条线路上网和2条运输回程。
这将只留下许多无法读取的白色空间( 除非您用一个 ide 插件来编码/ 解码在苍蝇上) 。
我从来没有尝试过这个, 原因很明显,你也不应该。
推荐文章
- 从JSON生成Java类?
- 使用Jackson将Java对象转换为JSON
- Javascript对象Vs JSON
- 在Swift中将字典转换为JSON
- 如何使用新的PostgreSQL JSON数据类型中的字段进行查询?
- 将类实例序列化为JSON
- JSON和对象文字表示法的区别是什么?
- 是否有与XQuery/XPath等价的JSON ?
- 对bash脚本函数中定义的变量使用curl POST
- 从Json转换为类型数组列表<T>
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- 打印JSON解析对象?
- JSON有查询语言吗?
- 无法加载文件或程序集'Newtonsoft。Json或其依赖项之一。清单定义与程序集引用不匹配
- TypeScript注释的语法记录在哪里?