JavaScript Object Notation (JSON),被广泛应用于网络传输、配置文件等许多地方,因其简洁、易读的特性而备受欢迎。然而,JSON不是无可指摘的,限制太过严格,使得一些场景变得棘手。这时候,JSON的超集——JSON5应运而生。

二、什么是JSON

JSON,全称JavaScript Object Notation,是一种基于文本,用于存储和传输数据的轻量级数据交换格式。JSON易于阅读和编写,同时也易于机器解析和生成。以下是一个简单的JSON例子:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}

这段JSON表述的是一个拥有三个属性(name, age, city)的对象。

三、什么是JSON5

JSON5是JSON的现代化扩展。该名字来源于ECMAScript 5(ES5),而ES5是JavaScript的一个版本。JSON5的目标是让JSON代码更容易阅读和编写。以下是一个JSON5的例子:

{
    // 注释:使用人员信息
    'name': 'John', // 注释:使用字符串时可以不用双引号包围
    age: 30, // 注释:使用属性名时可以不用引号包围
    city: 'New York' // 注释:最后一个属性后可以加逗号
}

可以看到,JSON5更加灵活和便利。

四、JSON与JSON5的区别

相比较JSON,JSON5新增了一些特性使得开发者可以更容易地编写和阅读JSON代码。

  1. 注释:JSON5支持单行和多行注释。

    // 这是一个单行注释
    /*
    这是一个
    多行注释
    */
    
  2. 属性名称:在JSON中,对象的属性名称必须用双引号包围。而在JSON5中,对象的属性名称可以不用引号包围,或者用单引号包围。

    {
        name: 'John' // 正确
        'name': 'John' // 正确
    }
    
  3. 字符串:在JSON中,字符串必须用双引号包围。而在JSON5中,字符串可以用单引号包围。

    {
        'name': 'John' // 正确
    }
    
  4. 尾随逗号:在JSON中,数组或对象的最后一个值后面不能有逗号。而在JSON5中,数组或对象的最后一个值后面可以有逗号。

    {
        'name': 'John', // 正确
    }
    

五、使用JSON5

要使用JSON5,你需要先安装json5包,可以使用npm进行安装:

npm install json5

然后,在你的JavaScript文件中,你可以引入这个包,并使用它的.parse()和.stringify()方法:

const JSON5 = require('json5');

let obj = JSON5.parse('{ name: "John" }'); // 将JSON5字符串转化为JavaScript对象

let str = JSON5.stringify(obj); // 将JavaScript对象转化为JSON5字符串

六、总结

JSON5是一个非常方便的数据交换格式,它继承了JSON简洁、高效的特性,同时加入了更多人性化的设计,使得数据的表达更加丰富,代码的阅读和编写更加容易。JSON的官网是https://json5.org/ ,可以到官网上具体更加深入地学习。

GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
2134cb94 * change NLOHMANN_JSON_FROM_WITH_DEFAULT to let NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT work with an empty JSON instance * fix ci_static_analysis_clang (ci_clang_tidy) * change NLOHMANN_JSON_FROM_WITH_DEFAULT to let NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT work with an empty JSON instance 2 天前
6057b31d * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * Use ubuntu-latest image to run Valgrind (#4575) * :wrench: use Clang image to run valgrind * :wrench: use Clang image to run valgrind * :wrench: use Clang image to run valgrind * :wrench: use Ubuntu image to run valgrind * Use Clang image to run iwyu (#4574) * :wrench: use Clang image to run iwyu * :wrench: use Clang image to run iwyu * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :wrench: overwork astyle call * :art: format code * :hammer: clean up 4 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐