Python中json字符串与json对象转换详解

发布时间:2023-05-20

一、JSON字符串转JSON对象

1、JSON字符串:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}

2、解析方法: 使用Python中的json.loads()函数可以将JSON字符串解析成对应的JSON对象,使用方法如下:

import json
json_str = '{ "name": "John", "age": 30, "city": "New York" }'
json_obj = json.loads(json_str)
print(json_obj)

输出结果为:

{'name': 'John', 'age': 30, 'city': 'New York'}

3、使用方法说明: json.loads()函数的参数为待解析的JSON字符串,返回值为对应的JSON对象。需要注意的是,JSON字符串必须符合JSON语法规范,否则将会报错。

二、JSON对象转JSON字符串

1、JSON对象:

{
    "name": "John",
    "age": 30,
    "city": "New York"
}

2、转换方法: 使用Python中的json.dumps()函数可以将JSON对象转换成对应的JSON字符串,使用方法如下:

import json
json_obj = { "name": "John", "age": 30, "city": "New York" }
json_str = json.dumps(json_obj)
print(json_str)

输出结果为:

{"name": "John", "age": 30, "city": "New York"}

3、使用方法说明: json.dumps()函数的参数为待转换的JSON对象,返回值为对应的JSON字符串。需要注意的是,转换后的JSON字符串并不一定是按键的字母序排列的,这取决于Python的字典实现方式。

三、处理复杂JSON数据

1、嵌套JSON对象:

{
    "name": "John",
    "age": 30,
    "city": "New York",
    "children": [
        {
            "name": "Mary",
            "age": 4
        },
        {
            "name": "Tom",
            "age": 2
        }
    ]
}

2、处理方法: 使用Python中的json.loads()函数解析嵌套JSON对象后,可以将嵌套的JSON对象以Python中的嵌套字典和列表的形式表示出来,示例代码如下:

import json
json_str = '{ "name": "John", "age": 30, "city": "New York", "children": [ { "name": "Mary", "age": 4 }, { "name": "Tom", "age": 2 } ] }'
json_obj = json.loads(json_str)
print(json_obj['children'][0]['name']) # 输出 Mary

3、使用方法说明: 使用json.loads()函数解析嵌套JSON对象后,可以按照Python中嵌套字典和列表的方式访问嵌套的JSON数据。

四、处理JSON中的日期数据

1、日期格式:

{
    "name": "John",
    "birth": "1985-05-15",
    "city": "New York"
}

2、处理方法: 使用Python中的datetime模块,可以将日期字符串解析成对应的日期对象,并且可以将日期对象格式化成指定的日期字符串。示例代码如下:

import json
from datetime import datetime
json_str = '{ "name": "John", "birth": "1985-05-15", "city": "New York" }'
json_obj = json.loads(json_str)
birth_str = json_obj['birth']
birth_obj = datetime.strptime(birth_str, '%Y-%m-%d')
print('Birth year is:', birth_obj.year)

3、使用方法说明: 使用datetime.strptime()函数可以将日期字符串解析成对应的日期对象,需要指定日期字符串的格式。使用datetime.strftime()函数可以将日期对象格式化成指定的日期字符串。

五、处理JSON中的中文字符集

1、JSON字符串:

{
    "name": "张三",
    "age": 30,
    "city": "北京"
}

2、处理方法: 使用Python中的json.dumps()函数时,指定ensure_ascii=False参数,可以将中文字符集正确的编码成Unicode字符集。示例代码如下:

import json
json_obj = { "name": "张三", "age": 30, "city": "北京" }
json_str = json.dumps(json_obj, ensure_ascii=False)
print(json_str)

输出结果为:

{"name": "张三", "age": 30, "city": "北京"}

3、使用方法说明: ensure_ascii=False参数表示不使用默认的ASCII编码,而是使用Unicode字符集将中文字符集正确编码。