我可以在json文件里使用注释吗? 如果是的话,怎么写?
当前回答
json 曾经支持评论,但被滥用,从标准中删除。
是从杰森的创造者那里降示的:
我删除了Json的评论, 是因为我看到有人利用他们来维持分解指令, 这种做法会破坏互操作性。 我知道,
json官方网站位于json.org.json被国际电子公司界定为一项标准。 总是有请愿程序要求修订标准。 出于若干原因,说明不可能加入json标准。
json 被设计成一种容易逆向工程(人类割除)的 xml 替代物。 它被简化到无需附加说明的地步。 它甚至不是标记语言。 目标是稳定性和互操作性。
任何理解目标方向“has-a”关系的人,都能理解任何json结构,这就是整个点。这只是一个带有节点标记(键/价值对)的定向环绕图(dag),这是一个近乎普遍的数据结构。
仅此说明要求的可能是“//这些是标记”。 关键名称可以按要求提供信息,允许任意的语义性。
任何平台都可以用几行代码分析json。 xml 需要复杂的 oo 图书馆, 在许多平台上都是不可行的 。
说明只会降低json 的互操作性。 没有什么可以补充的了, 除非您真正需要的是一个标记语言( xml) , 并且不关心您持续的数据是否容易解析 。
但Json的创造者也指出, js一直支持评论:
插入所有您喜欢的评论。 然后通过 Jsmin 管道, 然后再把它交给您的 Json 采摘师 。
其他回答
我刚刚找到了"咕噜咕噜咕噜咕噜声"
“从json那里提取评论, 让你在json档案中使用评论!”
{
// Rainbows
"unicorn": /* ❤ */ "cake"
}
*.json文件通常用作配置文件或静态数据,因此需要评论 * 一些像Netbeans这样的编辑在 *.json中接受评论。
问题在于将内容解析到对象上。 解决办法是总是应用清洁功能( 服务器或客户端 ) 。
php /p
$rgx_arr = ["/\/\/[^\n]*/sim", "/\/\*.*?\*\//sim", "/[\n\r\t]/sim"];
$valid_json_str = \preg_replace($rgx_arr, '', file_get_contents(path . 'a_file.json'));
手笔
valid_json_str = json_str.replace(/\/\/[^\n]*/gim,'').replace(/\/\*.*?\*\//gim,'')
因此我将调试信息放入 http 网站页眉, 以避免打破客户端:
header("My-Json-Comment: Yes, I know it's a workaround ;-) ");
调
注释中包括您选择的注释;在解析或传输之前用一个分解符将其删除。
i 刚刚发布json.minify () , 它将评论和空白从json区块中分离出来, 并使它成为有效的json, 可以进行剖析。 所以, 您可以使用它 :
JSON.parse(JSON.minify(my_str));
所以我决定写一篇全面的博客文章, 说明为什么评论在json中有意义。
假设您正在使用 json 来保存配置文件, 您想要对这些文件进行注释。 请继续插入您想要的所有评论。 然后通过 jsmin 进行管道, 然后将它交给您的 Jsson 采集器 。 - Douglas crockford, 2012 。
希望这对不同意Json. minify()的原因的人会有帮助。
json 的作者希望我们把评论写进json里, 但是在解析之前先把评论删掉( 见 Michael Burr 提供的链接 ) 。 如果json 有评论的话, 为什么不将评论标准化, 让 Json 牧师来做工作? 我不同意这里的逻辑, 但是, 可惜, 这就是标准。 使用其他人建议的山药解决方案是好的, 但是它需要图书馆的依赖性 。
如果您想要删除注释, 但不想有图书馆依赖性, 这里是一个双线解决方案, 用于 c++- 风格的注释, 但可以适应其它选项 :
var comments = new RegExp("//.*", 'mg');
data = JSON.parse(fs.readFileSync(sample_file, 'utf8').replace(comments, ''));
请注意,只有在您可以确定json数据不含评论启动器的情况下,例如('/'),才能使用这一解决方案。
实现 json 解析、 解析评论和不增加图书馆的另一种方法, 就是用 javascript 解释器来评价json 。 当然, 这个方法的提醒是, 您只想要评价未污染的数据( 不可信用户- 输入 ) 。 这是在 node. js 中的一个例子-- 另一个警告, 以下示例将只读过一次数据, 然后它会被缓存 :
data = require(fs.realpathSync(doctree_fp));
推荐文章
- 在ASP中设置Access-Control-Allow-OriginNet MVC -最简单的方法
- JWT vs cookie用于基于令牌的身份验证
- JQ:选择多个条件
- 什么是HTTP中的“406-不可接受的响应”?
- 有没有办法注释掉.ASPX页面中的标记?
- ASP。NET Core返回带有状态码的JSON
- 我如何添加环境变量启动。VSCode中的json
- PostgreSQL返回JSON数组的结果集?
- HTTP POST在Java中使用JSON
- 如何指定杰克逊只使用字段-最好是全局
- jQuery为ajax请求返回“parsererror”
- 检查Postgres JSON数组是否包含字符串
- 将bash变量传递给jq
- 在$.ajax()中将数组传递给ajax请求
- 转换JSON字符串到c#对象