在Python中,json数据和字符串的转换可以使用json模块或simplejson模块。

  json从Python2.6开始内置到了Python标准库中,我们不需要安装即可直接使用。

  simplejson需要安装后才可以使用。

  一、安装simplejson

  pip install simplejson

  二、使用json和simplejson将json格式的数据转换成字符串

  import json

  import simplejson

  list_json = [{'a': 'bbb'}, {'c': 'ddd'}, {'e': 'fff'}]

  print(type(list_json))

  json_str = json.dumps(list_json, ensure_ascii=False)

  print(json_str)

  print(type(json_str))

  simplejson_str = simplejson.dumps(list_json, ensure_ascii=False)

  print(simplejson_str)

  print(type(simplejson_str))

  运行结果:

  [{"a": "bbb"}, {"c": "ddd"}, {"e": "fff"}]

  [{"a": "bbb"}, {"c": "ddd"}, {"e": "fff"}]

  json和simplejson都提供了dump()和dumps(),dump是用于将内容转json字符串后写入文件中,dumps是将json格式的数据(字典或字典组成的列表)转换成json字符串。

  在dumps对数据进行处理时,会做encoding(编码)操作,dumps()中的ensure_ascii默认是为True的,会将中文也编码成ascii,所以我们指定ensure_ascii=False。

  三、使用json和simplejson将json字符串转换成其他数据

  json_list = json.loads(json_str, encoding='utf-8', strict=False)

  print(json_list)

  print(type(json_list))

  simplejson_list = simplejson.loads(simplejson_str, encoding='utf-8', strict=False)

  print(simplejson_list)

  print(type(simplejson_list))

  运行结果:无锡人流多少钱 http://www.bhnfkyy.com/

  [{'a': 'bbb'}, {'c': 'ddd'}, {'e': 'fff'}]

  [{'a': 'bbb'}, {'c': 'ddd'}, {'e': 'fff'}]

  json和simplejson都提供了load()和loads(),load与dump对应,是用于从文件中读取json字符串然后进行转换的,loads是将json字符串直接转换成Python数据类型。

  在使用loads对json字符串进行转换时,有时候可能因为json字符串的格式不是完全的符合json格式,会造成loads报错,这时候我们可以设置参数strict=False,表示loads()时,不严格检查json格式。

  Bug描述:

  在使用json.loads()将json字符串转换成json数据时,报错信息:Expecting ',' delimiter line l column .. (char ..),还遇到过这种报错:Expecting ',' delimiter or '}': line l column .. (char ..)

  这都是因为json字符串的样式不是合法的json格式,一般这种情况是从数据库中读数据时或者从文件中读数据时会发生.

  最常出现的就是数据里面有双引号",并且双引号前没有反斜杠转义。所以在使用json.loads()时要先确认要loads()的json字符串是否合法。如果有双引号则要有反斜杠转义。

  解决方法:

  如果出现了上面的报错,可以检查是否有不合法的字符,如有双引号,可以将双引号进行转义,避免解析时将其识别为json的双引号造成双引号多了报错,如果里面有带反斜杠\的url链接,可以将反斜杠\替换成斜杠/。

  可以通过re正则进行匹配替换,或者用字符串的replace()方法替换。

Python json和simplejson的使用的更多相关文章

  1. Python - json和simplejson比较(转)

    From:https://stackoverflow.com/questions/712791/what-are-the-differences-between-json-and-simplejson ...

  2. ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!

    通过ansible执行远程命令时报如下异常: Error: ansible requires the stdlib json or simplejson module, neither was fou ...

  3. python json

    #-*-coding:utf-8-*- '''编码格式记得统一,不然容易出现中文乱码,推荐用utf-8''' import json ##################json单对象######## ...

  4. python json基础学习01

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import json #全称(javascript object  ...

  5. python json数据的转换

    1  Python数据转json字符串 import json json_str = json.dumps(py_data) 参数解析: json_str = json.dumps(py_data,s ...

  6. python大法好——python json

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, ...

  7. Python json 读取 json 文件并转为 dict

    Python json 读取 json 文件并转为 dict 在 D 盘 新建 test.json: { "test": "测试\n换行", "dic ...

  8. Python Json & Pickle模块

    用于序列化的两个模块 Json,用于字符串 和 python数据类型间进行转换 Pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  9. Python: json模块实例详解

    ref:https://www.jianshu.com/p/e29611244810 https://www.cnblogs.com/qq78292959/p/3467937.html https:/ ...

随机推荐

  1. python中“生成器”、“迭代器”、“闭包”、“装饰器”的深入理解

    python中"生成器"."迭代器"."闭包"."装饰器"的深入理解 一.生成器 1.生成器定义:在python中,一边 ...

  2. Cookie认证

    Cookie认证 由于HTTP协议是无状态的,但对于认证来说,必然要通过一种机制来保存用户状态,而最常用,也最简单的就是Cookie了,它由浏览器自动保存并在发送请求时自动附加到请求头中.尽管在现代W ...

  3. FusionCharts的类 - 实例功能

    一.FusionCharts的类 - 实例功能 1.configure(name:string , value:string)  or  configure(configurations: Objec ...

  4. Linux下无法挂载U盘

    大概的错误信息是这样的: Error mounting /dev/sdb4 at /media/xxx/xx: Command-line`mount -t "ntfs" -o&qu ...

  5. stm32的低功耗模式:

    一.待机模式.待机模式是低功耗中最低功耗的,内部电压调节电路被关闭,  HSE.HIS.PLL被关闭:进入待机模式后,SRAM和寄存器的内容将丢失.  (CPU停止,外设停止,RAM的数据寄存器的内容 ...

  6. h5复制粘贴板,打开APP功能

    <div class="container"> <img src="../themes/mall/img/i_red_ad4.jpg"> ...

  7. Jquery使用ajax参数详解

    记录一下  Jquery使用ajax(post.get及参数详解) 1.get: $.ajax({ type: "GET", url: baseUrl + "Showco ...

  8. OpenSSL中关于RSA_new和RSA_free的内存泄漏

    这个具体的问题问题代码如下: RSA *rsaKey=RSA_new(); rsaKey = RSA_generate_key(keyBits,,NULL,NULL); RSA_free(rsaKey ...

  9. SQL Server 父子迭代查询语句

    -- 根据父ID得到所有子ID -- Get childs by parent idWITH TreeAS( SELECT Id,ParentId FROM dbo.Node P WHERE P.Id ...

  10. checkbox 全选 单选的使用

    绑定数据 if (!IsPostBack) { using (UsersDataContext con = new UsersDataContext()) { Repeater1.DataSource ...