TypeError:Google App Engine的Python中需要的字符串或缓冲区

2024-05-28 23:12:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我要使用以下代码显示对象的内容:

def get(self):
    url="https://www.googleapis.com/language/translate/v2?key=MY-BILLING-KEY&q=hello&source=en&target=ja"
    data = urllib2.urlopen(url)
    parse_data = json.load(data)
    parsed_data = parse_data['data']['translations']

    // This command is ok
    self.response.out.write("<br>")

    // This command shows above error
    self.response.out.write(str(json.loads(parsed_data[u'data'][u'translations'][u'translatedText'])))

但是这个错误

TypeError: expected string or buffer

显示为行的结果:

self.response.out.write(str(json.loads(parsed_data[u'data'][u'translations'][u'translatedText'])))

或者

self.response.out.write(json.loads(parsed_data[u'data'][u'translations'][u'translatedText']))

更新(修复):

我需要将字符串转换为JSON对象:

    # Convert to String
    parsed_data = json.dumps(parsed_data)

    # Convert to JSON Object
    json_object = json.loads(parsed_data)

    # Parse JSON Object
    translatedObject = json_object[0]['translatedText']

    # Output to page, by using HTML
    self.response.out.write(translatedObject)

Tags: to对象selfjsonurldataparseresponse
3条回答

函数返回一个类似文件的对象,而不是字符串。你应该先读一下回复。

url = "http://www.example.com/data"
f = urllib2.urlopen(url)
data = f.read()
print json.loads(data)
parse_data = json.load(data)
parsed_data = parse_data['data']['translations']

这些行已经完成了json.load,并提取了“data”和“translations”。然后代替:

self.response.out.write(str(
    json.loads(parsed_data)[u'data'][u'translations'][u'translatedText']))

你应该:

self.response.out.write(str(
    parsed_data[u'translatedText']))

我只需要将字符串转换为JSON对象,如下所示:

# Convert to String
parsed_data = json.dumps(parsed_data)

# Convert to JSON Object
json_object = json.loads(parsed_data)

# Parse JSON Object
translatedObject = json_object[0]['translatedText']

# Output to page, by using HTML
self.response.out.write(translatedObject)

相关问题 更多 >

    热门问题