json格式笔记

  1. 一、定义与特性
  2. 二、格式要求与语法规范
    1. 基础结构:
    2. 格式规范:
    3. json文件内容示例:
    4. 嵌套结构
  3. 三、数据处理方法(JavaScript)
  4. 相关

苦于基础不牢固而对一个格式要求抓耳挠腮、进度频频被阻塞。

一、定义与特性

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于 JavaScript 对象语法,但独立于编程语言。

  • 核心特征:
    1. 可读性强,结构清晰(键值对 + 层级嵌套);
    2. 体积小,传输效率高;
    3. 支持跨平台数据交换(Web/移动端/服务端通用)。

二、格式要求与语法规范

基础结构:

  • 对象:{ "key": value },键名必须用双引号包裹;
    • value基础类型:字符串("string")、数字(整数/浮点数)、布尔(true/false)、null
  • 数组:[ value1, value2 ],元素间用逗号分隔。

格式规范:

  • 禁止注释,键名必须为双引号字符串;
  • 最后一个元素后不能有逗号;
  • 严格区分大小写。

json文件内容示例:

[
    {
        "name": "Alice",
        "age": 14,
        "description": "哈喽,我是一条注释。虽然没有注释专用写法,但是添加一些不被获取处理的内容不就能当注释用了。看,下面的那个对象包含了一个数组,羡慕哦",
        "hobbies": ["⭐","叁七"]
    }
]

json文件为一个json数组,而内容是一条或多条json格式的对象

[
    {
        "name": "Alice",
        "age": 14,
        "hobbies": ["⭐"]
    },
    {
        "name": "叁七",
        "age": 20,
        "hobbies": ["🎮"]
    }
]

嵌套结构

[
    {
        "name": "Alice",
        "age": 14,
        "hobbies": ["⭐"],
        "friends": [
            {
                "name": "叁七",
                "age": 20,
                "hobbies": ["🎮"]
            },{
                "name": "Alice还没有其他朋友",
                "description":"并非json文件中所有并行对象格式都必须相同,但会在处理中报错,并且强迫症看到极其不舒服"
            }
            ]
    }
]

三、数据处理方法(JavaScript)

  1. JSON ↔ 字符串转换:
    • 序列化:JSON.stringify(obj),将对象转为 JSON 字符串;
    • 反序列化:JSON.parse(str),将字符串转为 JS 对象。

你可能见过

const obj = { name: "Alice", age: 14};

似乎很像json,然而事实是它只是一个JavaScript对象,再次强调json字符串是格式严格的,键值对必须用双引号包裹。

转换的方法是:

const jsonStr = JSON.stringify(obj);
const obj = JSON.parse(jsonStr);

序列化或反序列化之前不进行格式检查,有可能丢失原本的属性,你可能在报错中见过形如[Object Object]的字符串,就是被玩坏的json格式

   // 格式化
   const jsonStr = JSON.stringify(obj, null, 2); // **缩进2空格美化**;
   console.log(jsonStr);//打印出我们常见的格式
  1. 数据处理:

JavaScript 如何利用json数据?

假设一个json对象如下:
const data = { users: [{ id: 1 }, { id: 2 }] };

那么data.users就会得到一个数组,数组中包含两个对象,每个对象都有id属性。

  • 对象:用 for...in 循环或 Object.keys() 遍历键值对;
  • 数组:用 forEach()for 循环处理。
   // 示例:遍历 JSON 对象
   const data = { users: [{ id: 1 }, { id: 2 }] };
   for (let key in data) {
       console.log(key, data[key]);
   }
   // 输出:users [ { id: 1 }, { id: 2 } ]
   //注意,这里因为没有加引号,不是有效的json格式,json格式必须加引号
   data.users.forEach(user => console.log(user.id)); // 输出 1, 2;
   console.log(data.users.map(user => user.id)); // 输出 [1, 2]
   console.log(data.users[1]);// 输出 { id: 2 }
  1. 复杂操作:

    • 递归处理嵌套结构:用于深度修改或筛选数据;
    • 字符串替换:正则表达式处理特殊字符(如 replace(/\\/g, ''))。
    • 流式接收处理fetch得来的数据体
  2. JSON.parse() 异常处理:

    • 使用 try...catch 捕获无效 JSON 字符串。
    try {
        const data = JSON.parse(jsonStr);
    } catch (e) {
        console.error(e);//一般输出invalide JSON string
    }
    

    JSON.stringify()不会检查原本是不是字符串格式

关于json的处理,可以在node环境打开命令行输入简单的语句进行测试

cmd-> node -> console.log(JSON.parse('{"name": "Alice", "age": 14}'));

相关

jsonl文件:json文件每行一条数据,适合于大数据量的处理,常用于大模型数据训练。


此方悬停
相册 小说 Ai
/*音乐播放器插件*/ /*
*/