我正在开发Django的API,我在后端的python中编码数据并在java的前端解码时面临很多问题。
有效地向客户端应用程序发送正确的JSON数据的任何标准规则?
有一些印地语字符在前端没有正确接收,它给出了错误,说“JSON未终止对象在角色”所以我想问题就在我身边
答案 0 :(得分:3)
json.loads
和json.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'>