猿问

Golang JSON 解组 python 字符串

我正在使用一个 AWS SQS 队列,其中 python 使用 boto 将字符串放入队列中。大多数字符串是unicode,但有些是python的基本字符串类型。


我正在尝试使用 GO 读取这些消息并遇到 JSON 解码错误:


JSON Decode Error: 2 invalid character 'e' looking for beginning of value

当 GO 遇到不是 unicode 字符串而是 python 基本字符串格式的消息时,就会发生所有这些解码错误。


有没有办法将 python 字符串从 GO 转换为 unicode 字符串?ascii -> Unicode?


编辑:


这是一个工作和非工作 json 字符串的示例。我能够获得非工作的唯一方法是通过python,GO给出了上面的解码错误


Working:

 u'{"queue_time": "1374523279747", "object_id": "5efc90c0912fef247f028f1758082a299c018e8a2c6499289f3426217b14f0ae", "source_bucket": "ap1-cache"}',


Doesn't work:

 '{"queue_time": "1374523279.75026", "source_bucket": "eu1-cache", "object_id": "42e8b7b01ed5919a23d6d91fdc0b540944a5f45e4c387fa1c2bc20e1bf81bdeb"}',


holdtom
浏览 128回答 1
1回答

郎朗坤

要从 Python 生成正确的 JSON,您可以使用该json库:>>> d = {"queue_time": "1374523279747", "object_id": "...", "source_bucket": "ap1-cache"}>>> d{'queue_time': '1374523279747', 'source_bucket': 'ap1-cache', 'object_id': '...'}>>> import json>>> print json.dumps(d){"queue_time": "1374523279747", "source_bucket": "ap1-cache", "object_id": "..."}请注意,对于这个简单的示例,JSON 输出看起来几乎完全相似,但对于更复杂的事情,这不一定是正确的。例如元组和 unicode 字符串有不同的表示:>>> t = [u"Hello", ("World", "!"), u"\xa0"]>>> t[u'Hello', ('World', '!'), u'\xa0']>>> print json.dumps(t)["Hello", ["World", "!"], "\u00a0"]
随时随地看视频慕课网APP

相关分类

Python
我要回答