使用Python编码、解码JSON对象

测试版本为Python2.7

import json

pObj = {
    "int":10,
    "string":"test",
    "true":True,
    "false":False,
    "null":None,
    "list":["a"],
    "tuple":("a",)
    }
print "type=%s content=%s"%(type(pObj), pObj)
jsonStr = json.dumps(pObj) #编码
print "type=%s content=%s"%(type(jsonStr), jsonStr)
obj= json.loads(jsonStr) #解码
print "type=%s content=%s"%(type(obj), obj)

执行结果如下:

type=<type 'dict'> content={'false': False, 'string': 'test', 'tuple': ('a',), 'int': 10, 'list': ['a'], 'null': None, 'true': True}
type=<type 'str'> content={"false": false, "string": "test", "tuple": ["a"], "int": 10, "list": ["a"], "null": null, "true": true}
type=<type 'dict'> content={u'false': False, u'string': u'test', u'tuple': [u'a'], u'int': 10, u'list': [u'a'], u'null': None, u'true': True}

参考Python源码中的注释,编码结果如下图

+-------------------+---------------+
| Python            | JSON          |
+===================+===============+
| dict              | object        |
+-------------------+---------------+
| list, tuple       | array         |
+-------------------+---------------+
| str, unicode      | string        |
+-------------------+---------------+
| int, long, float  | number        |
+-------------------+---------------+
| True              | true          |
+-------------------+---------------+
| False             | false         |
+-------------------+---------------+
| None              | null          |
+-------------------+---------------+

解码结果如下图:

+---------------+-------------------+
| JSON          | Python            |
+===============+===================+
| object        | dict              |
+---------------+-------------------+
| array         | list              |
+---------------+-------------------+
| string        | unicode           |
+---------------+-------------------+
| number (int)  | int, long         |
+---------------+-------------------+
| number (real) | float             |
+---------------+-------------------+
| true          | True              |
+---------------+-------------------+
| false         | False             |
+---------------+-------------------+
| null          | None              |
+---------------+-------------------+

在解码的过程中遇到了一些问题:

import json

a = '{"name":"sean"}'
#b = '{'''name''':'''sean'''}' 编译异常
c = "{'name':'sean'}"
d = "{'''name''':'''sean'''}"
e = '''{'name':'sean'}'''
f = '''{"name":"sean"}'''
g = "{\"name\":\"sean\"}"

obj = json.loads(g)
print "type=%s content=%s" % (type(obj), obj)

debug结果如图


无论最外层使用单引号、双引号还是三引号,解析器解析后都会变为单引号,只要内外层引号不重复即可,否则内层引号前将添加\\导致解析错误


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值