python对象与json字符串的相互转化

python对象与json字符串的相互转化

在json字符串和python对象的相互转化中,会进行下列变换。

    会将python中字典的写法,转化为js中对象的写法。(没有区别)。 
    会将python中列表的写法,转化为js中array的写法。(没有区别) 
    会将python中unicode的写法,转化为js中string的写法。(与编码有关) 
    会将python中的intlong的写法,转化为js中number的写法。(没有区别) 
    会将python中的True的写法,转化为js中true的写法。(写法有区别) 
    会将python中的False的写法,转化为js中false的写法。(写法有区别) 
    会将python中的None的写法,转化为js中null的写法。(写法有区别)

反过来也是对应转换。

js中类型           Python中类型

object              dict
array               list
string              unicode
number (int)        int, long
number (real)       float
true                True
false               False
null                None

python字典所有的键必须为字符串,值可以是任何对象。包括字典、列表、字符串、数值、布尔值以及null。

json库

json库集成在了标准库中。使用import json即可引入。

将 Python 对象编码成 JSON 字符串

json.dumps() 将 Python 对象编码成 JSON 字符串

json.dumps(obj, skipkeys=False, ensure_ascii=True, 
				check_circular=True, allow_nan=True, 
				cls=None, indent=None, separators=None, 
				encoding="utf-8", default=None, 
				sort_keys=False, **kw)
  1. dumps函数包含一些参数,可以使用参数让 JSON 数据格式化输出。
  2. sort_keys参数:是否对键值排序。sort_keys=True
  3. separators:分隔符。separators=(‘,’, ‘: ‘) 参数:两个键值对间的分隔符,键和值中间的分隔符的。
  4. indent:缩进字符数。indent=10
  5. encoding:编码类型。encoding=”utf-8”

将 Python 对象存储成 JSON文件

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, 
					check_circular=True, allow_nan=True,
					 cls=None, indent=None, separators=None,
        			default=None, sort_keys=False, **kw)

测试用例

import json
myobject = {
    'key2': {
        'key31': None,
        'key32': False,
        'key33': 13.6,
    },
    'key1': {
        'key22': ['value22_1', 'value22_2']
    }
}

#将对象或对象数组转化为json字符串
jsonstr =json.dumps(myobject, indent=4,sort_keys=True)
print(jsonstr)

#python对象或对象数组写入json文件:方法1
with open('data.json', 'w') as f:
    json.dump(myobject, f)

#python对象或对象数组写入json文件:方法2
import io
f=io.open('data1.json', 'w', encoding='utf-8')
json.dump(myobject, f, ensure_ascii=False)
注意:测试发现,使用str(dict),转化为字符串为单引号,
使用json.dumps转化为字符串为双引号

Python读取json文件

json.loads()将已编码的 JSON 字符串解码为 Python 对象

json.loads(s, *, encoding=None, cls=None, 
				object_hook=None, parse_float=None,
        		parse_int=None, parse_constant=None,
         		object_pairs_hook=None, **kw)

json.load() 将已编码的 JSON 文件解码为 Python 对象

json.load(fp, *, cls=None, object_hook=None,
				 parse_float=None, parse_int=None, 
				 parse_constant=None, object_pairs_hook=None,
				  **kw)

测试用例。运行环境python3.6

#coding:utf-8
import json
#将json字符串转化为对象或对象数组
jsonstr = '{"key2": {"key31": null, "key32": false, "key33": 13.6}, "key1": {"key22": ["value22_1", "value22_2"]}}'
obj = json.loads(jsonstr)
print(obj)

#读取json文件转换成python对象或对象数组:方法1
with open('data1.json', 'r') as f:
    obj = json.load(f)
    print(obj)

#读取json文件转换成python对象或对象数组:方法2
import io
f = io.open('data1.json', 'r', encoding='utf-8')
json_str = f.readline()   #读取文件内容
obj = json.loads(json_str)  #将json字符串转化为对象
print(obj)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 内置的 `json` 模块来实现。 首先,你需要导入 `json` 模块: ``` import json ``` 然后,你可以使用 `json.dumps()` 函数将字典转换为 JSON 字符串: ``` data = { "name": "John", "age": 30, "city": "New York" } json_str = json.dumps(data, ensure_ascii=False) print(json_str) ``` 输出结果: ``` {"name": "John", "age": 30, "city": "New York"} ``` `json.dumps()` 函数的第二个参数 `ensure_ascii` 用于控制是否以 ASCII 编码输出,如果设置为 `False`,则可以输出中文字符。 ### 回答2: Python中可以使用内置的json模块将字典格式转化JSON字符串。 首先,导入json模块: ```python import json ``` 然后,定义一个字典对象: ```python data = {'name': 'Alice', 'age': 25, 'city': 'New York'} ``` 接下来,使用json.dumps()方法将字典对象转化JSON字符串: ```python json_string = json.dumps(data) ``` 最后,可以打印输出JSON字符串: ```python print(json_string) ``` 以上代码将输出如下结果: ```python {"name": "Alice", "age": 25, "city": "New York"} ``` 另外,如果想要保留缩进或排序,可以在调用dumps()方法时传入额外的参数。例如,将缩进设置为4个空格: ```python json_string = json.dumps(data, indent=4) ``` 或者按照字母顺序排序键: ```python json_string = json.dumps(data, sort_keys=True) ``` 这样可以得到带有缩进或排序的JSON字符串。 需要注意的是,如果字典中的值包含了不支持JSON序列化的类型(如函数、类等),则会引发TypeError异常。 ### 回答3: 在Python中,可以使用内置的`json`模块将字典对象转换为JSON格式的字符串。使用`json.dumps()`方法可以将字典转换为JSON字符串。 下面是一个示例代码: ```python import json # 创建一个字典对象 person = { "name": "张三", "age": 25, "city": "北京" } # 将字典转换为JSON字符串 json_str = json.dumps(person) # 输出JSON字符串 print(json_str) ``` 运行代码后,将会输出以下内容: ```json {"name": "\u5f20\u4e09", "age": 25, "city": "\u5317\u4eac"} ``` 在输出结果中,你会看到字典的键和值已经被转换为相应的JSON格式。如果希望输出时中文字符正常显示,可以添加`ensure_ascii=False`参数,例如`json_str = json.dumps(person, ensure_ascii=False)`。 需要注意的是,如果字典中包含不支持JSON序列化的数据类型,如`datetime`对象,转换过程将会出错。在这种情况下,可以使用自定义的处理函数或类扩展`JSONEncoder`类来序列化这些特殊对象

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值