JSON有两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

eval与json.loads都可以将大部分的JSON串转成Python对象,但也有区别:

>>> import json

>>> s = '{"one":1,"two":2}'

>>> json.loads(s)

{u'two': 2, u'one': 1}

>>> eval(s)

{'two': 2, 'one': 1}

json.loads与eval都能将s转成python中的对象,json.loads将json中的字符串转成unicode(types.UnicodeType),eval转成了str(types.StringType)。在读文件时如果有中文如

此时用json.loads会报错如下:

这时使用eval不会报错,强烈推荐,这个问题困扰了我一晚上。

对于普通的数据类型,json.loads和eval都能用,但:

>>> x="[null,true,false,1]"

>>> json.loads(x)

[None, True, False, 1]

>>> eval(x)

Traceback (most recent call last):

File "", line 1, in

File "", line 1, in

NameError: name 'null' is not defined

在遇到特殊类型的时候,eval就不管用了。eval通常用来执行一个字符串表达式,并返回表达式的值。比如:

>>> eval('1+1')

2

>>> json.loads('1+1')

Traceback (most recent call last):

File "", line 1, in

File "/usr/lib/python2.7/json/__init__.py", line 338, in loads

return _default_decoder.decode(s)

File "/usr/lib/python2.7/json/decoder.py", line 368, in decode

raise ValueError(errmsg("Extra data", s, end, len(s)))

ValueError: Extra data: line 1 column 2 - line 1 column 4 (char 1 - 3)

json字符串转python对象的数据类型转换表    python对象转json字符串类型转换表

JSON

Python

object

dict

array

list

string

unicode

number (int)

int, long

number (real)

float

true

True

false

False

null

None

Python

JSON

dict

object

list, tuple

array

str, unicode

string

int, long, float

number

True

true

False

false

None

null

>>> dct = {'one':None,'two':2}

>>> json.dumps(dct)

'{"two": 2, "one": null}'

>>> arry = [True, False, 'hello']

>>> json.dumps(arry)

'[true, false, "hello"]'

另,需要注意的是:

>>> dct="{'one':1}"

>>> json.loads(dct)

Traceback (most recent call last):

File "", line 1, in

File "/usr/lib/python2.7/json/__init__.py", line 338, in loads

return _default_decoder.decode(s)

File "/usr/lib/python2.7/json/decoder.py", line 365, in decode

obj, end = self.raw_decode(s, idx=_w(s, 0).end())

File "/usr/lib/python2.7/json/decoder.py", line 381, in raw_decode

obj, end = self.scan_once(s, idx)

ValueError: Expecting property name: line 1 column 2 (char 1)

报错是因为json不认单引号,json中的字符串需要用双引号包起来。

python中的float和eval_python中eval和float_python中eval与json.loads对json的处理相关推荐

  1. python中eval与json.loads对json的处理

    2019独角兽企业重金招聘Python工程师标准>>> JSON有两种结构: "名称/值"对的集合(A collection of name/value pair ...

  2. python中json.load()、json.loads()、json.dump()、json.dumps()的区别

    json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将j ...

  3. python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分

    一.概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()将字典转化为字符串 (2)json.load ...

  4. Python中json模块的使用,以及json.loads()和json.dumps()的区别

    在Python 中,json模块中提供了一种很简单的方式来编码和解码JSON数据. 1. json.dumps() 和 json.loads(),这两个都是json()格式处理函数. json.dum ...

  5. python json.loads namespace_python json.loads兼容单引号数据的方法

    Python的json模块解析单引号数据会报错,示例如下 >>> import json >>> data = "{'field1': 0, 'field ...

  6. python中json模块_Python json模块与jsonpath模块区别详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后 ...

  7. python的json loads用法_Python json库中load、loads、dump、dumps的区别与用法

    1 json.loads() 将json格式的数据转化为字典类型 data_json = '{"msg": "登录成功", "code": ...

  8. python的json dump_python中json.dump和json.dumps的区别

    json.dumps (&json.loads): 是对数据的操作: json.dump (&json.load): 也是类似的功能,只是与文件操作结合起来了. 1. json.dum ...

  9. Python爬取热门微博,并存储到MySQL中

    目标网站:m.weibo.cn url的获取可以从浏览器的F12中的network的XHR中找到. weibo_demo.py: import requests import json from w3 ...

最新文章

  1. 【C++】拷贝控制与资源管理
  2. c 服务器通信和文件传输,服务器、终端和文件传输方法
  3. Git - 使用指南
  4. centos7.3安装tomcat报Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  5. 一招搞定css页面布局
  6. 华为可以看游戏时长吗_怎么测试华为手机玩游戏的帧率情况
  7. Height Half Values
  8. python pyquery不规则数据的抓取_11. 数据提取-PyQuery
  9. ks.cfg配置详解
  10. Opencv环境配置
  11. 何万青:7月24日阿里云上海峰会超算大神
  12. PyTorch :transforms的二十二个方法
  13. 什么事数据补全_事无补
  14. lenovo启动热键_常见电脑启动项热键
  15. 《 种子用户方法论》读书笔记
  16. 计算机和电脑键盘进水怎么办,电脑键盘进水怎么办 电脑键盘进水解决方法
  17. Android 设置黑白滤镜
  18. 文件服务器迁移多种方案
  19. vsftpd的安装与使用
  20. python实现双屏情况下,第二个屏播发视频

热门文章

  1. Tensorflow快速入门2--实现手写数字识别
  2. 下载CentOS7、CentOS8镜像(ISO)
  3. php 管理 mysql 数据库 代码_安装并使用phpMyAdmin管理MySQL数据库_php
  4. java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例
  5. maven工程指定web资源包,创建jsp文件
  6. IDEA和Eclipse工程结构的区别
  7. 查找python项目依赖并生成requirements.txt的两种方法
  8. _mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':no such file or directory
  9. 节点部署_国际电联设定大星座部署节点要求
  10. 用c语言合并两个链表,合并两个链表.