JSON-review

JSON概述

JSONJavaScript Object Notation),由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式。

  • Light-weight data exchange format
    Much simpler than XML; Language-independent; Inspired by the syntax of JavaScript object literals
  • Some differences from JavaScript objects
    String in JSON must be double-quoted; Okay to single-quote in JavaScript (& Python)
  • JSON is case-sensitive

一句话表达就是,JSON是一种格式,基于文本,优于轻量,用于交换数据,由于其用文本格式的保存方式,所以一般也叫JSON字符串。

语法

  • value = string | number | object | array | true | false | null
  • object = {} | { members }
    • members = pair | pair, members
    • pair = string : value
  • array = [] | [ elements ]
    • elements = value | value, elements

一般情况下,JSON大多为一个array,array里的每一个元素为一个object,object可以理解为字典
JSON 在线检查器: https://www.json.cn/

Python中使用JSON

encode/decode

JSON操作主要分为两个:

  1. encode,将Python对象转化为JSON文本,主要函数 dump( ) dumps( )
  2. decode,将JSON文本转化为Python对象,主要函数 load( ) loads( )

转化规则

Python JSON
list/tuple array
dict object
None null
True true
False false
‘abc’ “abc”

关于Python字典转JSON文本的说明:

  • Keys in Python can be number, string, or tuple.
  • Number is also converted to string.
  • But tuple (with two or more components) is not acceptable by dumps()/dump()

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import json # json库为Python自带的标准库

# JSON encoder Python object => JSON document
json.dumps([3, 'abc', True, None]) # '[3, "abc", true, null]'

# Python object => JSON file
data = {'name':'Sam','age':23}
with open('user_info.json','w') as out_file:
json.dump(data,out_file)

## JSON decoder
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') # ['foo', {'bar': ['baz', None, 1.0, 2]}]

# JSON file => Python object
with open('user_info.json','r') as in_file:
data = json.load(in_file)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!