JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。它通常用于在服务器和客户端之间交换数据,特别是在 Web 应用中。
JSON 格式基于 JavaScript 对象表示法,但它是语言独立的,广泛用于多种编程语言中。JSON 使用文本格式来存储和表示数据,通常用于存储配置文件、数据库交互和API响应等场景。
JSON 的基本结构
JSON 由键值对组成,格式类似于 JavaScript 对象,但有一些规则:
- 键(key):必须是字符串,放在双引号中。
- 值(value) :可以是字符串、数字、布尔值(
true
或false
)、数组、对象或null
。 - 对象 :由一对大括号
{}
包围,表示一个键值对集合。 - 数组 :由一对方括号
[]
包围,表示一个值的有序集合。
示例
javascript
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "New York"
}
}
如何使用 JSON:
- 读取和解析 JSON :许多编程语言都有内置的库来解析和生成 JSON。例如,在 Java 中,可以使用
Jackson
或Gson
库,在 JavaScript 中,JSON.parse()
和JSON.stringify()
方法可以处理 JSON。
Jackson
Jackson 是一个高效且功能强大的 JSON 处理库,广泛用于 Java 项目中。它提供了丰富的功能,能够处理各种类型的 JSON 数据,支持复杂的对象映射、流式解析、树状模型等。
示例
java
import com.fasterxml.jackson.databind.ObjectMapper;
class Person {
public String name;
public int age;
// 构造函数、getter、setter等
}
public class JacksonExample {
public static void main(String[] args) throws Exception {
// 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
// 序列化:Java 对象转 JSON 字符串
Person person = new Person();
person.name = "John";
person.age = 30;
String json = objectMapper.writeValueAsString(person);
System.out.println(json);
// 反序列化:JSON 字符串转 Java 对象
String jsonInput = "{\"name\":\"John\",\"age\":30}";
Person personFromJson = objectMapper.readValue(jsonInput, Person.class);
System.out.println(personFromJson.name + " - " + personFromJson.age);
}
}
输出
java
{"name":"John","age":30}