4

我有一个从 SQL 查询的结果创建 JSON 的脚本。我遇到的问题是输出记录的(纪元毫秒)时间戳很长,这是获取long带有附加 L 的标准 Python 表示,而不是“正确”的 JSON 编号:

{'status': 'default', 'ID': '7717''recordTimestamp': 1372651201000L, 'Latitude': 50.836689, 'Longitude': -53.879143}

json.dumps(record)用来生成这个,但我不知道如何制作long一个 JSON 格式的数字。有没有人可以快速解决这个问题?谢谢!

编辑:在 Ubuntu 上使用 Python 2.7.4

4

3 回答 3

4

json.dumps不附加尾随L.

>>> json.dumps({'status': 'default', 'ID': '7717', 'recordTimestamp': 1372651201000L, 'Latitude': 50.836689, 'Longitude': -53.879143})
'{"status": "default", "Latitude": 50.836689, "Longitude": -53.879143, "ID": "7717", "recordTimestamp": 1372651201000}'

>>> json.dumps(98765432109876543210L)
'98765432109876543210'
于 2013-07-16T15:57:47.213 回答
0

您可以使用str()功能:

str(longInt)

删除尾随L

于 2013-07-16T15:56:30.927 回答
0

请参阅 json doc:专业化 JSON 对象编码:

>>> import json
>>> def encode_complex(obj):
...     if isinstance(obj, complex):
...         return [obj.real, obj.imag]
...     raise TypeError(repr(o) + " is not JSON serializable")
...
>>> json.dumps(2 + 1j, default=encode_complex)
'[2.0, 1.0]'
>>> json.JSONEncoder(default=encode_complex).encode(2 + 1j)
'[2.0, 1.0]'
>>> ''.join(json.JSONEncoder(default=encode_complex).iterencode(2 + 1j))
'[2.0, 1.0]'

所以你可以定义你的 encode_complex 方法,用intlong类型做一些事情。

于 2013-07-16T16:01:20.740 回答