python json串对象转换

超、凢脫俗 2022-05-21 04:57 229阅读 0赞

python中json与对象间的转换很方便,使用其自身带的json库即可完成,如下示例代码

  1. import json
  2. # Python 字典类型转换为 JSON字符串
  3. blogs = [{
  4. 'name' : 'fengshuiyue',
  5. 'url' : 'http://blog.csdn.net/fengshuiyue'
  6. }]
  7. json_str = json.dumps(data)
  8. print ("JSON 字符串:", json_str)
  9. #Python JSON字符串转 字典(dict)类型
  10. blogList = json.loads(json_str)

但是我们往往从网上获取到的json串的key没有单引号或双引号,这样的json串使用json.loads转换时会报错,因此我们还需要给这样的串添加上引号的函数,函数如下:

  1. # 函数将这样的字符串
  2. # '[{name:"fengshuiyue",url:"http://blog.csdn.net/fengshuiyue"}]'
  3. # 变为
  4. # '[{"name":"fengshuiyue","url":"http://blog.csdn.net/fengshuiyue"}]'
  5. def quote_keys_for_json(self,json_str):
  6. # """给键值不带双引号的json字符串的所有键值加上双引号。
  7. quote_pat = re.compile(r'".*?"')
  8. a = quote_pat.findall(json_str)
  9. json_str = quote_pat.sub('@', json_str)
  10. key_pat = re.compile(r'(\w+):')
  11. json_str = key_pat.sub(r'"\1":', json_str)
  12. assert json_str.count('@') == len(a)
  13. count = -1
  14. def put_back_values(match):
  15. nonlocal count
  16. count += 1
  17. return a[count]
  18. json_str = re.sub('@', put_back_values, json_str)
  19. return json_str

有时网络接口返回的json串中的字符,unicode编码了,我们需要先对字符串解码,将其转换为中文在转换

  1. # 返回的数据是unicode编码,
  2. # 中文都被解析成\u4e2d\u6587(中文)这类的字符串了,
  3. # 所以通过下面的方法将其转换成中文
  4. encodeStr = jsonStr.encode('utf-8').decode('unicode_escape')

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 json和js对象

    JSON字符串转JS对象 JSON.parse():可以将以JSON字符串转换为JS对象,它需要一个JSON字符串作为参数,会将该字符串转换为JS对象并返回