我可以在json文件里使用注释吗? 如果是的话,怎么写?
当前回答
特意从json中删除了评论。
我删除了Json的评论, 是因为我看到人们用他们来维持分析指令, 这种做法会破坏互操作性。 我知道缺乏评论会让一些人感到悲哀, 但不应该。 假设你正在使用 Json 来保存配置文件, 您想要做笔记。 继续, 插入所有您喜欢的评论。 然后通过 jsmin 插入它, 然后把它交给 Jsmin , 然后再交给 Jsson 牧师 。
源代码:由douglas crockford在 g+ 上的公开声明
其他回答
json对配置文件和其他本地使用非常有意义, 因为它无处不在, 因为它比xml简单得多。
如果人们有强烈的理由反对在传送数据时在json中发表评论(无论是否有效),那么json可能会被分成两个:
json-com: json on the winet, 或在传送json数据时适用的规则。 json- doc: json文件, 或文件或本地文件中的json。 定义有效的json文件的规则 。
json-doc将允许评论,而其他细小差异可能也存在,例如处理白色空间。 剖析器可以很容易地从一个形状转换成另一个形状。
Douglas Crockford就该问题发表的评论(由@artur czajka提及)
假设您正在使用 json 来保存配置文件, 您想要对此进行注释。 请继续, 插入所有您想要的注释 。 然后通过 jsmin 进行管道, 然后将它交给您的 json 采集器 。
我们谈论的是通用配置文件问题(跨语言/平台), 他用js特定工具回答!
可以用任何语言来实施json特定的简化, 但将其标准化, 使得它变得无所不在, 在所有语言和平台的旁听者之间无处不在, 所以人们不再浪费时间来缺少这个功能, 因为他们有很好的使用案例, 在网上论坛里研究这个问题, 并让人们告诉他们这是一个坏主意, 或者说很容易执行删除文本文件的评论。
另一个问题是互操作性。 假设您有图书馆或 api 或任何子系统, 有与其相关的配置或数据文件 。 这个子系统将使用不同语言访问 。 那么您是否要告诉人们: 顺便说一句, 请不要忘记在将 Json 文档中的评论转至 Parser 之前, 请先从 Json 文件中删除这些评论 !
正如许多答案已经指出的,Json在本地没有评论。当然,有时你还是想要评论。对python来说,两种方法就是评论json(和//仅对python 2)或json_tricks(或//对python 2和python 3),这有其他几个特点。免责声明:我做了json_tricks。
json背后的想法是提供各种应用程序之间的简单数据交换。 这些应用程序通常是基于网络的,语言是javascript。
但是,虽然数据显然需要由解析代码忽略或具体处理, 但是,它实际上不允许这样的评论, 但是,作为数据中的名称/价值对之一,通过一个评论肯定行得通,
简逊档案不应该包含传统意义上的评论。 它应该只是数据。
详情请查看json网站。
json不支持本地的评论, 但您可以自己做解码器或至少预处理器来删除评论, 这完全没问题(只要您只是忽略评论, 不使用它们来指导您的应用程序如何处理json数据 ) 。
json 没有评论。 json 编码器不能输出评论。 json 编码器可以接受和忽略评论。
评论不应被用来传递任何有意义的信息。 这就是json的目的。
参考:杜格拉斯·克罗福德,Json Spec的作者。
这是一个"你能"的问题。 这是"可以"的答案。
否, 您不应该使用重复对象成员将侧通道数据塞进json 编码 。 (请参见 rfc 中“ 对象中的名称应该是独一无二的 ” ) 。
是的,你可以在json周围插入评论, 你可以分析出来。
但如果你想将任意的侧道数据插入和提取到一个有效的json 中, 请使用一个答案 。 我们利用 Json 编码中的数据非独有的表达方式。 在 rfc 的第二节中, “ 允许在六个结构字符中的任何字符之前或之后使用白色空间 ” 。
* rfc 仅表示“在六个结构字符之前或之后允许有白色空间”,但没有明确提及字符串、数字、“假”、“真”和“null”。 在所有执行中,这一遗漏被忽略。
首先,将你的json拼写成拼写:
$jsonMin = json_encode(json_decode($json));
然后将您的评论编码为二进制 :
$hex = unpack('H*', $comment);
$commentBinary = base_convert($hex[1], 16, 2);
然后输入您的二进制 :
$steg = str_replace('0', ' ', $commentBinary);
$steg = str_replace('1', "\t", $steg);
您的输出 :
$jsonWithComment = $steg . $jsonMin;
推荐文章
- 查询JSON类型内的数组元素
- 将JSON字符串转换为HashMap
- 将JsonNode转换为POJO
- Json_encode()转义正斜杠
- 如何写一个JSON文件在c# ?
- 在序列化和反序列化期间JSON属性的不同名称
- 为什么PHP的json_encode函数转换UTF-8字符串为十六进制实体?
- Ajax会调用什么样的响应,比如'for (;;);{json data}的意思?
- 在JavaScript中将JSON字符串解析为特定对象原型
- 使用Jackson将JSON字符串转换为漂亮的打印JSON输出
- jQuery。由于转义了JSON中的单引号,parseJSON抛出“无效JSON”错误
- 用c#解析JSON
- 如何合并2 JSON对象从2个文件使用jq?
- 在VS Code中禁用“Comments are not allowed In JSON”错误
- 如何在Kotlin解析JSON ?