将JSON字符串的unicode字符转换为dict Python 3

时间:2015-08-05 05:54:25

标签: python json python-3.x dictionary unicode

我正在尝试计算JSON数据中的Unicode字符数。我正在使用请求从Feed中获取数据。

import requests

r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')'
j_data = r.text

现在,我需要将j_data转换为字典才能单独获取message个项目。如果我只使用json.loads(j_data),我会获得UnicodeEncodeError: 'charmap' codec can't encode character

因此,我正在对j_data进行编码,然后尝试使用loads转换为dict。我收到此错误

TypeError: the JSON object must be str, not 'bytes'

如何解决这个问题?

代码:

import requests
import json

r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')

j_data = r.text

encoded = j_data.encode()

b = json.loads(encoded)
print(b)

3 个答案:

答案 0 :(得分:0)

它似乎在Python 2.7.6中运行良好

import requests
import json

req = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')
contentJ = json.loads(req.content)

我得到一个名为contentJ的dict

答案 1 :(得分:0)

在我看来,你尝试编码一些不需要编码的东西。使用编码剥离行,并且在Python3.4中都可以正常工作。

import requests
import json

r = requests.get('https://venmo.com/api/v5/public?since=1438578858&until=1438578958')

j_data = r.text

b = json.loads(j_data)
print(type(b))

答案 2 :(得分:0)

要获取json,请使用r.json()

import requests # $ pip install requests

r = requests.get(url)
data = r.json()

您的错误:UnicodeEncodeError: 'charmap' codec can't encode character.与json解析无关。当您尝试将Unicode打印到Windows控制台时,很可能会发生这种情况。配置可显示所需字符的控制台字体并安装win-unicode-console包:

T:\> py -mpip install win-unicode-console
T:\> py -mrun your_script_that_prints_unicode.py

请参阅What's the deal with Python 3.4, Unicode, different languages and Windows?