Python JSON编码

Key*_*upt 51 python encoding json types simplejson

我正在尝试用Python将数据编码为JSON,而且我遇到了很多麻烦.我认为这个问题只是一个误解.

我对Python比较陌生,从来没有真正熟悉各种Python数据类型,所以这很可能让我感到困惑.

目前,我正在声明一个列表,循环遍历另一个列表,并在另一个列表中附加一个列表:

import simplejson, json
data = [['apple', 'cat'], ['banana', 'dog'], ['pear', 'fish']]

x = simplejson.loads(data)
# >>> typeError: expected string or buffer..

x = simplejson.dumps(stream)
# >>> [["apple", "cat"], ["banana", "dog"], ["pear", "fish"]]
# - shouldn't JSON encoded strings be like: {{"apple":{"cat"},{"banana":"dog"}}
Run Code Online (Sandbox Code Playgroud)

所以我要么:

  • 我不懂JSON语法
  • 我不明白Pythons JSON模块
  • 我使用的是不合适的数据类型.

Pao*_*ino 67

Python lists转换为JSON arrays.它给你的是一个完全有效的JSON字符串,可以在Javascript应用程序中使用.要获得预期,您需要使用dict:

>>> json.dumps({'apple': 'cat', 'banana':'dog', 'pear':'fish'})
'{"pear": "fish", "apple": "cat", "banana": "dog"}'
Run Code Online (Sandbox Code Playgroud)


Map*_*pio 20

我认为你只是在交换转储负载.

>>> import json
>>> data = [['apple', 'cat'], ['banana', 'dog'], ['pear', 'fish']]
Run Code Online (Sandbox Code Playgroud)

第一个作为(JSON编码)字符串返回其数据参数:

>>> encoded_str = json.dumps( data )
>>> encoded_str
'[["apple", "cat"], ["banana", "dog"], ["pear", "fish"]]'
Run Code Online (Sandbox Code Playgroud)

第二个相反,返回与其(JSON编码)字符串参数对应的数据:

>>> decoded_data = json.loads( encoded_str )
>>> decoded_data
[[u'apple', u'cat'], [u'banana', u'dog'], [u'pear', u'fish']]
>>> decoded_data == data
True
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 17

simplejson(或jsonPython 2.6及更高版本中的库)中,loads获取JSON字符串并返回Python数据结构,dumps获取Python数据结构并返回JSON字符串.JSON字符串可以编码Javascript数组,而不仅仅是对象,Python列表对应于编码数组的JSON字符串.获取JSON字符串,例如

{"apple":"cat", "banana":"dog"}
Run Code Online (Sandbox Code Playgroud)

传递给的Python对象json.dumps可以是:

dict(apple="cat", banana="dog")
Run Code Online (Sandbox Code Playgroud)

虽然JSON字符串也是有效的Python语法dict.我相信你所说的特定字符串只是无效的JSON语法.