python json串对象转换
python中json与对象间的转换很方便,使用其自身带的json库即可完成,如下示例代码
import json
# Python 字典类型转换为 JSON字符串
blogs = [{
'name' : 'fengshuiyue',
'url' : 'http://blog.csdn.net/fengshuiyue'
}]
json_str = json.dumps(data)
print ("JSON 字符串:", json_str)
#Python JSON字符串转 字典(dict)类型
blogList = json.loads(json_str)
但是我们往往从网上获取到的json串的key没有单引号或双引号,这样的json串使用json.loads转换时会报错,因此我们还需要给这样的串添加上引号的函数,函数如下:
# 函数将这样的字符串
# '[{name:"fengshuiyue",url:"http://blog.csdn.net/fengshuiyue"}]'
# 变为
# '[{"name":"fengshuiyue","url":"http://blog.csdn.net/fengshuiyue"}]'
def quote_keys_for_json(self,json_str):
# """给键值不带双引号的json字符串的所有键值加上双引号。
quote_pat = re.compile(r'".*?"')
a = quote_pat.findall(json_str)
json_str = quote_pat.sub('@', json_str)
key_pat = re.compile(r'(\w+):')
json_str = key_pat.sub(r'"\1":', json_str)
assert json_str.count('@') == len(a)
count = -1
def put_back_values(match):
nonlocal count
count += 1
return a[count]
json_str = re.sub('@', put_back_values, json_str)
return json_str
有时网络接口返回的json串中的字符,unicode编码了,我们需要先对字符串解码,将其转换为中文在转换
# 返回的数据是unicode编码,
# 中文都被解析成\u4e2d\u6587(中文)这类的字符串了,
# 所以通过下面的方法将其转换成中文
encodeStr = jsonStr.encode('utf-8').decode('unicode_escape')
还没有评论,来说两句吧...