在Python中使用编码发送JSON数据的正确方法

时间:2016-10-19 05:15:23

标签: python json django

我正在开发Django的API,我在后端的python中编码数据并在java的前端解码时面临很多问题。

有效地向客户端应用程序发送正确的JSON数据的任何标准规则?

有一些印地语字符在前端没有正确接收,它给出了错误,说“JSON未终止对象在角色”所以我想问题就在我身边

1 个答案:

答案 0 :(得分:3)

json.loadsjson.dumps通常用于在python中编码和解码JSON数据。

dumps获取一个对象并生成一个字符串,load将获取一个类文件对象,从该对象读取数据,并使用该字符串创建一个对象。

默认情况下,编码器理解Python的本机类型(string,unicode,int,float,list,tuple,dict)。

import json

data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
print 'DATA:', repr(data)

data_string = json.dumps(data)
print 'JSON:', data_string

值的编码方式与Python的repr()输出非常相似。

$ python json_simple_types.py

DATA: [{'a': 'A', 'c': 3.0, 'b': (2, 4)}]
JSON: [{"a": "A", "c": 3.0, "b": [2, 4]}]

编码,然后重新解码可能不会给出完全相同类型的对象。

import json

data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 } ]
data_string = json.dumps(data)
print 'ENCODED:', data_string

decoded = json.loads(data_string)
print 'DECODED:', decoded

print 'ORIGINAL:', type(data[0]['b'])
print 'DECODED :', type(decoded[0]['b'])

特别是,字符串转换为unicode,元组成为列表。

$ python json_simple_types_decode.py

ENCODED: [{"a": "A", "c": 3.0, "b": [2, 4]}]
DECODED: [{u'a': u'A', u'c': 3.0, u'b': [2, 4]}]
ORIGINAL: <type 'tuple'>
DECODED : <type 'list'>