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字符串。具体步骤如下:
- 初始化字符串:开始一个空的json字符串
- 拼接键值对:根据需要拼接各个键值对
- 处理数据类型:确保再拼接时正确处理不同的数据类型(如字符串、数字、布尔值)。
以下是一个模板:
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 + "\"}";
-
开始构造:
-
postData += "{"
-
开始一个json对象
-
-
拼接键值对:
-
\"createBy\":\"" + String(serialNumber) + "\","
-
键
createBy
的值是serialNumber
的字符串表示,使用String()
方法转换。 -
注意双引号需要转义。
-
-
处理其它字段:
-
\"macQR\":\"" + temp->macQR + "\","
-
将
temp->macQR
的值拼接到键macQR
中。 -
\"qualified\":" + String((temp -> endResult == "AllPass") ? "true" : "false") + ","
-
使用条件运算符检查temp->endResult 的值,如果为 "AllPass" 则返回true, 否则返回false。
-
这里直接拼接布尔值,不需要引号。
-
-
继续拼接:
-
\"skuQR\":\"" + temp->skuQR + "\","、\"snQR\":\"" + temp->snQR + "\","
-
类似地拼接其他字段的值。
-
-
数组或对象:
-
\"stateList\":" + stateList + ","
-
假设
stateList
是一个已经构造好的JSON数组或对象字符串,可以直接拼接。
-
-
最后几个字段:
-
\"testResult\":\"" + temp->endResult + "\",、\"testStatus\":\"" + temp->TestState + "\",、\"testTime\":\"" + temp->testTime + "\"}
-
拼接最后几个字段,注意最后一个键值对不需要逗号。
-
总结
通过这种方法,可以在运行时动态生成JSON字符串。这在需要构造复杂或变化的数据时非常有用,但也需要注意:
- 安全性:确保输入值不包含会干扰JSON格式的字符。
- 可读性:字符串拼接可能导致代码难以阅读,适当使用格式化工具或库可以提高代码质量。
EX2: 字符串拼接示例
"\"macQR\":\"" + temp->macQR + "\","
- 首先我们来看第一个引号和最后一个引号,这个是代表字符串的开始和结束,框住的内容是这个字符串的内容。
- okok,那我们来看看macQR旁边的两个 ==\"== ,macQR身为一个键,为字符串类型,需要用字符串包住,这里面的。
" + temp->macQR + "
-
这部分代码的目的是将一个变量的值插入到字符串中。
-
具体来说:
"
:这个引号是字符串拼接的开始。+
:这个符号是字符串拼接运算符,表示将字符串和变量的值连接在一起。temp->macQR
:这是一个变量,表示temp
对象的macQR
属性的值。这个值将在最终的字符串中被插入。+
:再次使用字符串拼接运算符,将变量的值与后续字符串连接。"
:这个引号是字符串拼接的结束。它和前面的引号一起标识了要拼接的字符串的结束。
-
逗号来说,是代表接下来还有字符串需要拼接
-
最后剩下两个 ==/''== 是包裹值的字符串,如果值的类型不是字符串,则无需这样包裹。
0 条评论