JSON数据格式怎么弄?从零开始JSON的创建与使用
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式,因其易读、易解析、跨语言兼容等特点,成为Web开发、API接口、数据存储等场景中的主流数据格式,如果你刚接触JSON,想知道“JSON数据格式怎么弄”,本文将从基础概念到实际操作,一步步教你JSON的创建、使用和常见问题处理。
JSON是什么?为什么需要它?
JSON是一种文本格式,用于表示结构化数据,它以“键值对”(Key-Value Pair)为核心,通过特定的语法规则组织数据,方便程序之间传递和解析。
为什么选择JSON?
- 轻量级:相比XML等格式,JSON的冗余字符少,数据体积更小,传输效率更高。
- 易读易写:结构清晰,接近JavaScript对象和Python字典等常见数据结构,人类可读性强。
- 跨语言兼容:几乎所有编程语言(如Python、Java、C++、JavaScript等)都支持JSON的解析和生成,不同语言间的数据交互无障碍。
- 原生支持:JavaScript原生支持JSON(
JSON.parse()和JSON.stringify()),前端开发中可直接使用。
JSON的基本语法规则
要创建JSON数据,必须遵循其核心语法规则,JSON的数据结构分为两种:对象和数组,两者可以嵌套使用。
JSON对象(Object)
JSON对象表示“键值对”的集合,类似于Python的字典、JavaScript的对象,语法规则:
- 用 包裹,内部由多个键值对组成。
- 键(Key)必须是字符串,必须用双引号 包裹(不能用单引号)。
- 值(Value)可以是多种数据类型(见下文“数据类型”)。
- 键值对之间用英文逗号 分隔,最后一个键值对后不能加逗号。
示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"address": {
"city": "北京",
"district": "海淀区"
},
"courses": ["数学", "英语", "编程"]
}
JSON数组(Array)
JSON数组表示值的有序集合,类似于Python的列表、JavaScript的数组,语法规则:
- 用
[]包裹,内部由多个值组成,值之间用英文逗号 分隔。 - 数组的值可以是任意JSON数据类型(包括对象、数组等)。
示例:
[
{
"id": 1,
"name": "商品A",
"price": 99.9
},
{
"id": 2,
"name": "商品B",
"price": 149.0
}
]
JSON支持的数据类型
JSON中的值(Value)可以是以下6种类型:
| 类型 | 说明 | 示例 |
|---------------|----------------------------------------------------------------------|--------------------------|
| 字符串(String) | 必须用双引号 包裹,支持转义字符(如 \n、\t、\") | "Hello, JSON" |
| 数字(Number) | 整数或浮点数,不支持八进制、十六进制(除非是标准格式),不支持 NaN | 100、-3.14 |
| 布尔值(Boolean)| 只能是 true 或 false(全小写,首字母不能大写) | true、false |
| null | 表示空值,只能是 null(全小写) | null |
| 对象(Object) | 键值对集合,用 包裹 | 见“JSON对象”示例 |
| 数组(Array) | 有序值集合,用 [] 包裹 | 见“JSON数组”示例 |
如何创建JSON数据?
手动编写JSON(适用于简单场景)
直接按照JSON语法规则编写,注意引号、逗号等细节,定义一个用户信息的JSON对象:
{
"userId": "1001",
"username": "json_demo",
"userInfo": {
"gender": "男",
"interests": ["阅读", "旅行", "摄影"]
},
"createTime": "2023-10-01T12:00:00Z"
}
注意:
- 键必须用双引号,单引号会报错(如
'name'是错误的)。 - 最后一个键值对后不能加逗号(如
"age": 25,后面无内容时,逗号多余)。
通过编程语言生成JSON(适用于动态数据)
实际开发中,数据通常来自数据库或用户输入,需通过代码转换为JSON格式,以下是常见语言的示例:
(1)JavaScript(前端/Node.js)
JavaScript原生支持JSON,可直接用对象/数组赋值,再通过 JSON.stringify() 转为JSON字符串:
// 1. 定义JavaScript对象
const user = {
name: "李四",
age: 30,
hobbies: ["跑步", "游戏"],
address: null
};
// 2. 转换为JSON字符串(参数用于格式化,可选)
const jsonString = JSON.stringify(user, null, 2); // 2表示缩进2个空格,美化输出
console.log(jsonString);
/* 输出:
{
"name": "李四",
"age": 30,
"hobbies": [
"跑步",
"游戏"
],
"address": null
}
*/
(2)Python(后端开发)
Python中需使用 json 模块,将字典/列表转换为JSON字符串:
import json
# 1. 定义Python字典
user = {
"name": "王五",
"age": 28,
"isVIP": True,
"orders": [
{"orderId": "A001", "amount": 199},
{"orderId": "A002", "amount": 89}
]
}
# 2. 转换为JSON字符串(ensure_ascii=False支持中文,indent=2美化)
json_str = json.dumps(user, ensure_ascii=False, indent=2)
print(json_str)
/* 输出:
{
"name": "王五",
"age": 28,
"isVIP": true,
"orders": [
{
"orderId": "A001",
"amount": 199
},
{
"orderId": "A002",
"amount": 89
}
]
}
*/
(3)Java(后端开发)
Java中常用第三方库(如Gson、Jackson),以下是Gson示例:
import com.google.gson.Gson;
public class JsonDemo {
public static void main(String[] args) {
// 1. 定义Java对象(需有getter/setter)
User user = new User();
user.setName("赵六");
user.setAge(35);
user.setMarried(false);
// 2. 用Gson转为JSON字符串
Gson gson = new Gson();
String jsonStr = gson.toJson(user);
System.out.println(jsonStr);
/* 输出:
{"name":"赵六","age":35,"married":false}
*/
}
}
// User类(示例)
class User {
private String name;
private int age;
private boolean married;
// getter/setter方法(省略)
}
在线工具生成JSON(适用于非程序员或快速验证)
如果不熟悉编程,可通过在线工具将数据转为JSON:
- JSON格式化工具:如 JSON Formatter & Validator,输入数据后自动格式化为标准JSON。
- CSV转JSON:如 CSV to JSON Converter,上传CSV文件,一键转换为JSON数组。
如何解析JSON数据?
解析JSON是指将JSON字符串转换为编程语言中的原生对象(如JavaScript的对象、Python的字典),方便操作数据,以下是常见语言的解析方法:
JavaScript(前端/Node.js)
用 JSON.parse() 将JSON字符串转为JavaScript对象:
const jsonStr = '{"name":"钱七","age":22,"hobbies":["音乐","电影"]}';
// 解析为JavaScript对象
const obj = JSON.parse(jsonStr);
console.log(obj.name); // 输出:钱七
console.log(obj.hobbies[0]); // 输出:音乐
Python
用 json.loads()(解析字符串)或 json.load()(解析文件):
import json
json_str = '{"name":"孙八","age":40,"skills":["Python","Java"]}';
# 解析为Python字典
data = json.loads(json_str)


还没有评论,来说两句吧...