今天犯了一个白痴级的错误,那就是向JSON数据文件中,很多行后面添加注释(Comment,//)。

  导致Node.js程序不能读取JSON文件,Server启动失败。

  Debug时间蛮久,经同事提醒才发现。

  

  错误既然发生了,不能稀里糊涂地过去。于是查资料,为什么不能在JSON数据中添加注释?最终找到源头。

  来自Javascript大神Douglas Crockford的答案,从Google+中获得:

  

  原来JSON中不能有注释的原因,是他注意到很多人利用注释来制定解析规则,这破坏了互操作性(Interoperability)。因此大神将其剔除。

  链接:https://plus.google.com/+DouglasCrockfordEsq/posts/RK8qyGVaGSr

  

  但其实有些不严格的JSON解析器还是支持注释的,例如我将加过注释的JSON文件用Javascript解析器JSHint来扫描(Vim版插件),以及用在线JSON解析来解析,也都没有问题。这也是为什么我Debug很久才在同事的提醒下找到原因。

  下次谨记。

  

  Kevin Song,2015年3月18日

                                                          

JSON中不能加注释的更多相关文章

  1. vi中批量加注释

    用v进入virtual模式 按Control+v(win下面ctrl+q)进入列模式 上下键来进行选择 I进行输入(shift+i) 按两次ese键

  2. JSON文件加注释的7种方法

    JSON文件加注释的7种方法 缺省不能加注释,现实有需求 根据JSON规范(http://www.json.org, RFC 4627, RFC 7159),不支持注释.JSON规范之所以不允许加注释 ...

  3. Json中不支持任何形式的注释,那我们要怎么解决呢

    Json中不支持任何形式的注释,我们可以使用曲线救国的思路:在对象的定义中添加一个key(comment),其对应的value值就是注释填写的语句. 如: { "name":&qu ...

  4. 如何在xml文件中加注释或取消注释

    1)加注释:Ctrl+Shift+/ 2)取消注释:Ctrl+Shift+\ 本文欢迎转载,但请注明作者与出处: 作者:Sophia 出处:http://www.cnblogs.com/Sophia- ...

  5. 配置TortoiseSVN客户端, 强制签入前加注释

    正如上篇提到, 总有一些人在签入代码到SVN前没有加注释, 然后, 像这样: 鬼才知道改了什么东西. ①有些人可能就是没有写注释的习惯, ②有些人可能是忘记写注释 && SVN服务端和 ...

  6. js中eval详解,用Js的eval解析JSON中的注意点

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...

  7. MVC3不能正确识别JSON中的Enum枚举值

    一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...

  8. 如何处理JSON中的特殊字符

    JSON 是适用于 Ajax 应用程序的一种有效格式,原因是它使 JavaScript 对象和字符串值之间得以快速转换.由于 Ajax 应用程序非常适合将纯文本发送给服务器端程序并对应地接收纯文本,相 ...

  9. Eclipse Code Template 设置自动加注释(转)

    Eclipse Code Template 设置自动加注释 设置注释模板的入口: Window->Preference->Java->Code Style->Code Temp ...

随机推荐

  1. HashMap 1.8的源码分析三

    线程安全问题: 在添加时候并没有进行安全考虑,枷锁 所以是线程不安全的,接下来进行代码测试; package com.mmall.concurrency.example.commonUnsafe; i ...

  2. sublime侧边栏管理sidebarEnhancements浏览器设置

    sidebarEnhancements是为了增强sublime Text侧边栏功能的一个插件,但是同时也可以实现设置浏览器浏览当前文件的功能. Ctrl+Shift+p 输入package contr ...

  3. java 调用本地应用程序 Java打开(.word,.txt,.pdf)文件

    https://blog.csdn.net/lebron3v/article/details/80741000

  4. Sharepoint 页面超链接地址打开

    SharePoint页面: http://test:81/pages/nihao.aspx 页面超链接:<a href="www.baidu.com" >百度</ ...

  5. Jenkins自动化CI CD流水线之5--pipeline

    一.概览 二.安装 在对jenkins进行初始化安装时,默认已经安装了jenkins的相关插件,如下图所示: 三.实操 新建任务: 编写pipeline脚本: 我们可以借助流水线语法去做. test流 ...

  6. Maven常见问题总结

    Failed to read artifact descriptor for cn.lds.tsp:common:jar 1. 先查看本地repository是否下载成功,如果没有,考虑更改下载rep ...

  7. shell read line

    cat >b <<EOF line1 line2 line3 EOF # 方法1 while read line do echo ${line} done < <(cat ...

  8. Web开发中FormData对象的使用

    参考: FormData 对象的使用 - Web API 接口 | MDN

  9. Vue.js-----轻量高效的MVVM框架(八、使用组件)

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有 ...

  10. eclipse 快捷键使用日志

    Ctrl+Shift+F 格式化代码 Ctrl+Shift+O  快速导入资源包 Ctrl+m 最大化/最小化当前窗口(全屏/还原)