Json

概述

JSON是一种轻量级的数据交换格式,易于人阅读和编写,同事也易于机器解析和生成。它广泛应用于数据传输,特别是在Web应用程序中。

Json的数据结构

1. 对象(Object)

用花括号 { } 包裹,包含一对键值对。

EX:

{
    "name":"Alice",
    "age":25,
    "isStudent":false
}

2. 数组(Array)

用花括号 { } 包裹,包含一组值。

EX:

[
    "apple",
    "banana",
    "cherry"
]

3. 键值对

在对象中,每个键(字符串)与值(可以是字符串、数字、布尔值、数组或另一个对象)之间用冒号:风格,多个键值对用逗号,分隔。

数据类型

JSON支持以下数据类型:

  • 字符串(String):必须用双引号包裹,如 "HELLO"
  • 数字(Number):可以是整数或者浮点数,如 42 或 3.14
  • 布尔值(Boolean):true 或 false
  • 数组(Array):如上所述
  • 对象(Object):如上所述
  • 空值(Null):表示空值

EX:这是一个完整的JSON示例

{
    "person":{
        "name":"Alice",
        "age":25,
        "isStudent":false,
        "hobbies":["reading","traveling","swimming"],
        "address":{
            "street":"123 Main St",
            "city":"Anytown",
            "zip":"12345"
        }
    }
}

使用场景

  • API数据交换:许多Web API使用JSON格式返回数据。
  • 配置文件:一些应用程序使用JSON作为配置文件格式。
  • 数据存储:某些数据库(如MongoDB)使用JSON格式存储数据。

如何使用JSON

在JavaScript中,你可以使用以下方法来处理JSON:

  • 解析JSON:将JSON字符串转换为JavaScript对象

    const jsonString = '{"name": "Alice", "age": 25}';
    const jsonObject = JSON.parse(jsonString);
  • 序列化JSON:将JavaScript对象转换为JSON字符串

    const jsonObject = { name: "Alice", age: 25 };
    const jsonString = JSON.stringify(jsonObject);

动态的去构造一个JSON的基本方法:

在这种方法中,我们使用字符串拼接的方式将不同的值组合成一个完整的JSON字符串。具体步骤如下:

  1. 初始化字符串:开始一个空的json字符串
  2. 拼接键值对:根据需要拼接各个键值对
  3. 处理数据类型:确保再拼接时正确处理不同的数据类型(如字符串、数字、布尔值)。

以下是一个模板:

postData += "{\"createBy\":\"" + String(serialNumber) + "\","
            "\"macQR\":\"" + temp->macQR + "\","
            "\"qualified\":" + String((temp->endResult == "AllPass") ? "true" : "false") + ","
            "\"skuQR\":\"" + temp->skuQR + "\","
            "\"snQR\":\"" + temp->snQR + "\","
            "\"stateList\":" + stateList + ","
            "\"testResult\":\"" + temp->endResult + "\","
            "\"testStatus\":\"" + temp->TestState + "\","
            "\"testTime\":\"" + temp->testTime + "\"}";
  1. 开始构造:

    • postData += "{"
    • 开始一个json对象

  2. 拼接键值对:

    • \"createBy\":\"" + String(serialNumber) + "\","
    • createBy 的值是 serialNumber 的字符串表示,使用 String() 方法转换。

    • 注意双引号需要转义。

  3. 处理其它字段:

    • \"macQR\":\"" + temp->macQR + "\","
    • temp->macQR 的值拼接到键 macQR 中。

    • \"qualified\":" + String((temp -> endResult == "AllPass") ? "true" : "false") + ","

    • 使用条件运算符检查temp->endResult 的值,如果为 "AllPass" 则返回true, 否则返回false。

    • 这里直接拼接布尔值,不需要引号。

  4. 继续拼接:

    • \"skuQR\":\"" + temp->skuQR + "\","、\"snQR\":\"" + temp->snQR + "\","
    • 类似地拼接其他字段的值。

  5. 数组或对象:

    • \"stateList\":" + stateList + ","
    • 假设 stateList 是一个已经构造好的JSON数组或对象字符串,可以直接拼接。

  6. 最后几个字段:

    • \"testResult\":\"" + temp->endResult + "\",、\"testStatus\":\"" + temp->TestState + "\",、\"testTime\":\"" + temp->testTime + "\"}
    • 拼接最后几个字段,注意最后一个键值对不需要逗号。

总结

通过这种方法,可以在运行时动态生成JSON字符串。这在需要构造复杂或变化的数据时非常有用,但也需要注意:

  • 安全性:确保输入值不包含会干扰JSON格式的字符。
  • 可读性:字符串拼接可能导致代码难以阅读,适当使用格式化工具或库可以提高代码质量。

EX2: 字符串拼接示例

"\"macQR\":\"" + temp->macQR + "\","

  1. 首先我们来看第一个引号和最后一个引号,这个是代表字符串的开始和结束,框住的内容是这个字符串的内容。
  2. okok,那我们来看看macQR旁边的两个 ==\"== ,macQR身为一个键,为字符串类型,需要用字符串包住,这里面的。

" + temp->macQR + "

  1. 这部分代码的目的是将一个变量的值插入到字符串中。

  2. 具体来说:

    • ":这个引号是字符串拼接的开始。
    • +:这个符号是字符串拼接运算符,表示将字符串和变量的值连接在一起。
    • temp->macQR:这是一个变量,表示 temp 对象的 macQR 属性的值。这个值将在最终的字符串中被插入。
    • +:再次使用字符串拼接运算符,将变量的值与后续字符串连接。
    • ":这个引号是字符串拼接的结束。它和前面的引号一起标识了要拼接的字符串的结束。
  3. 逗号来说,是代表接下来还有字符串需要拼接

  4. 最后剩下两个 ==/''== 是包裹值的字符串,如果值的类型不是字符串,则无需这样包裹。


易碎

易碎

我看到的今夜的星空,是几万年前的光,我眼中的你是此时的你!

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注

网站ICP备案皖ICP备2024045222号-1