json教程

JSON教程

1. JSON简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON是纯文本形式的,采用键值对(key-value pairs)的方式存储数据。

2. JSON的基本结构

一个JSON对象由键值对组成,键(key)是一个字符串,值(value)可以是字符串、数字、布尔值、数组或其他JSON对象。

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "courses": ["math", "history", "chemistry"],
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

3. JSON与Python

在Python中,可以使用内置的json模块来处理JSON数据。

  • 导入库
import json
  • 将JSON字符串转换为Python对象
json_str = '{"name": "小明", "age": 18}'
python_dict = json.loads(json_str)
print(python_dict)  # 输出:{'name': '小明', 'age': 18}
  • 将Python对象转换为JSON字符串
student = {
  "name": "小红",
  "age": 20,
  "scores": [98, 95, 92],
  "is_monitor": True,
  "hobby": None
}
json_string = json.dumps(student, ensure_ascii=False, indent=4)
print(json_string)

4. JSON文件操作

在实际开发中,经常需要读写JSON文件。

  • 读取JSON文件
with open('data.json', 'r', encoding='utf-8') as file:
    data = json.load(file)
print(data)
  • 写入JSON文件
data = {
  "name": "John",
  "age": 30
}
with open('data.json', 'w', encoding='utf-8') as file:
    json.dump(data, file, ensure_ascii=False, indent=4)

5. JSON与其他编程语言

JSON作为一种数据格式,在多种编程语言中都有广泛的应用,如PHP, Perl, Ruby和Java等。

6. JSON工具

  • jq :一个轻量级且灵活的命令行JSON处理器。

  • json2.js :JavaScript库,用于在浏览器中解析和生成JSON数据。

7. JSON与JavaScript

在JavaScript中,可以使用JSON.stringify()将对象转换为JSON字符串,使用JSON.parse()将JSON字符串转换为对象。

var obj = {
  name: "Bill Gates",
  age: 62,
  city: "Seattle"
};
var myJSON = JSON.stringify(obj);
console.log(myJSON);  // 输出:'{"name":"Bill Gates","age":62,"city":"Seattle"}'

var parsedObj = JSON.parse(myJSON);
console.log(parsedObj.name);  // 输出:"Bill Gates"

8. JSON与XML的区别

  • JSON使用键值对存储数据,而XML使用标签存储数据。

  • JSON数据结构更简单,易于阅读和编写。

  • JSON支持多种数据类型,包括数组和布尔值,而XML只支持字符串。

9. JSON编码与解码

  • 编码 (json.dumps()):将Python对象转换为JSON字符串。

  • 解码 (json.loads()):将JSON字符串转换为Python对象。

10. JSON数据类型转换对照表

  • Python编码为JSON类型:

  • dict -> object

  • list -> array

  • str -> string

  • int, float -> number

  • True, False -> boolean

  • None -> null

  • JSON解码为Python类型:

  • object -> dict

  • array -> list

  • string -> str

  • number -> `int

Top