#python学习笔记(十八)#解析JSON

目录

1 JSON结构

2 解析JSON

3 python对象转化成JSON


1 JSON结构

▲JSON结构

{
    "name" : "Chuck",
    "phone" : {
        "type" : "intl",
        "number" : "+1 734 303 4456"
    },
    "email" : {
        "hide" : "yes"
    }
}

▲XML结构

<person>
    <name>Chuck</name>
    <phone type="intl">
        +1 734 303 4456
    </phone>
    <email hide="yes" />
</person>

▲JSON与XML的区别:

XML可以在元素中添加attribute属性,如<phone type="intl"> ,而JSON中只有key-value对;

XML中有顶级元素<person>,而JSON最外层为{}

2 解析JSON

▲利用JSON库中的json.load()函数将json转化成python对象解析

▲示例一:

###json转化成字典
import json
data = '''
{
    "name" : "Chuck",
    "phone" : {
        "type" : "intl",
        "number" : "+1 734 303 4456"
    },
    "email" : {
        "hide" : "yes"
    }
}'''

info = json.loads(data)###json.loads解析JSON
print(info)
print(type(info))
print('User count:', len(info))


print('Name', info['name'])
print('phone number', info['phone']['number'])

▲示例二: 

###json转化成列表
import json
data = '''
[
    { "id" : "001",
        "x" : "2",
        "name" : "Chuck"
    } ,
    { "id" : "009",
        "x" : "7",
        "name" : "Brent"
    }
]'''

info = json.loads(data)###json.loads解析JSON
print(info)###info为包含两个字典的列表
print(type(info))###list
print('User count:', len(info))

for item in info:###列表循环输出
    print('Name', item['name'])
    print('Id', item['id'])
    print('Attribute', item['x'])

3 python对象转化成JSON

▲用json.dumps()转换 

▲可以应用于以下对象,Python 对象会被转换为 JSON(JavaScript)等效项:

PythonJSON
dictObject
listArray
tupleArray
strString
intNumber
floatNumber
Truetrue
Falsefalse
Nonenull
import json

print(json.dumps({"name": "Bill", "age": 63}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))

▲示例 

###dic转化成json
import json

x = {
  "name": "Bill",
  "age": 63,
  "married": True,
  "divorced": False,
  "children": ("Jennifer","Rory","Phoebe"),
  "pets": None,
  "cars": [
    {"model": "Porsche", "mpg": 38.2},
    {"model": "BMW M5", "mpg": 26.9}
  ]
}

print(json.dumps(x))

输出内容

{"name": "Bill", "age": 63, "married": true, "divorced": false, "children": ["Jennifer", "Rory", "Phoebe"], "pets": null, "cars": [{"model": "Porsche", "mpg": 38.2}, {"model": "BMW M5", "mpg": 26.9}]}

▲上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。采用indent参数进行缩进

json.dumps(x, indent=4)

输出内容:

{
    "name": "Bill",
    "age": 63,
    "married": true,
    "divorced": false,
    "children": [
        "Jennifer",
        "Rory",
        "Phoebe"
    ],
    "pets": null,
    "cars": [
        {
            "model": "Porsche",
            "mpg": 38.2
        },
        {
            "model": "BMW M5",
            "mpg": 26.9
        }
    ]
}

▲separators参数定义分隔符,默认值为(", ", ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开:

json.dumps(x, indent=4, separators=(". ", " = "))

输出内容:

####.分隔不同对象,=分隔key和values####
{
    "name" = "Bill". 
    "age" = 63. 
    "married" = true. 
    "divorced" = false. 
    "children" = [
        "Jennifer". 
        "Rory". 
        "Phoebe"
    ]. 
    "pets" = null. 
    "cars" = [
        {
            "model" = "Porsche". 
            "mpg" = 38.2
        }. 
        {
            "model" = "BMW M5". 
            "mpg" = 26.9
        }
    ]
}

▲sort_keys=True时对结果进行排序

json.dumps(x, indent=4, sort_keys=True)

输出内容:

{
    "age": 63,
    "cars": [
        {
            "model": "Porsche",
            "mpg": 38.2
        },
        {
            "model": "BMW M5",
            "mpg": 26.9
        }
    ],
    "children": [
        "Jennifer",
        "Rory",
        "Phoebe"
    ],
    "divorced": false,
    "married": true,
    "name": "Bill",
    "pets": null
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值