一、json介绍
JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成。它是基于JavaScript Programming Language
, Standard ECMA-262 3rd Edition - December 1999
的一个子集。JSON
采用完全独立于程序语言的文本格式,但是也使用了类C
语言的习惯(包括C
,C++
, C#
, Java
, JavaScript
, Perl
, Python
等),这些特性使JSON
成为理想的数据交换语言。JSON
基于两种结构:
- “名称/值”对的集合(
A collection of name/value pairs
)。不同的编程语言中,它被理解为对象(object
),纪录(record
),结构(struct
),字典(dictionary
),哈希表(hash table
),有键列表(keyed list
),或者关联数组 (associative array
)。 - 值的有序列表(
An ordered list of values
)。在大部分语言中,它被实现为数组(array
),矢量(vector
),列表(list
),序列(sequence
)。
这些都是常见的数据结构。目前,绝大部分编程语言都以某种形式支持它们。这使得在各种编程语言之间交换同样格式的数据成为可能。JSON
具有以下这些形式:
对象(object) 是一个无序的“‘名称/值’对”集合。一个对象以“{”
(左括号)开始,“}”
(右括号)结束。每个“名称”后跟一个“:”
(冒号);“‘名称/值’ 对”之间使用“,”
(逗号)分隔。
数组(array) 是值(value
)的有序集合。一个数组以“[”
(左中括号)开始,“]”
(右中括号)结束。值之间使用“,”
(逗号)分隔。
值(value) 可以是双引号括起来的字符串(string
)、数值(number
)、true
、false
、null
、对象(object
)或者数组(array
),这些结构可以嵌套。
字符串(string) 是由双引号包围的任意数量Unicode
字符的集合,使用反斜线转义。一个字符(character
)即一个单独的字符串(character string
)。JSON
的字符串(string
)与C
或者Java
的字符串非常相似。
数值(number) 也与C
或者Java
的数值非常相似。只是JSON
的数值没有使用八进制与十六进制格式。
二、用python解析json文件
1、先给出json
的测试文件内容
{
"fontFamily": "微软雅黑",
"fontSize": 12,
"BaseSettings":{
"font":1,
"size":2
}
}
2、调用python
内置的json
库进行解析,测试代码如下:
import json
def readjson():
# 设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错
f = open("test.json", encoding="utf-8")
file = json.load(f)
family = file["fontFamily"]
size = file["fontSize"]
basesetting = file["BaseSettings"]["font"] #注意多重结构的读取语法
return (family, size, basesetting)
if __name__ == '__main__':
print(readjson())
最后解析成功,结果为: