我需要输出上的“-40”为-40,我该怎么做?
In [2]: foo
Out[2]: '{\n\t"rssiIntentRange":"-40"\n}'
In [3]: import json
In [4]: json.loads(foo)
Out[4]: {u'rssiIntentRange': u'-40'}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些干净且通用的东西。在 json.loads 之后进行处理是我已经在做的事情,由于所有类型的数据和索引,它非常脏。如果 json.loads 不是最好的选择,我也愿意接受其他处理 JSON 的方法
如果你想影响调用时发生的事情json.loads(),你需要编写一个对象钩子:
import json
def int_please_object_hook(obj):
"""If a value in obj is a string, try to convert it to an int"""
rv = {}
for k, v in obj.items():
if isinstance(v, basestring):
try:
rv[k] = int(v)
except ValueError:
rv[k] = v
else:
rv[k] = v
return rv
j = '{"key1": "value1", "key2": "10", "key3": "-10"}'
print(json.loads(j))
# {'key1': 'value1', 'key2': '10', 'key3': '-10'}
print(json.loads(j, object_hook=int_please_object_hook))
# {'key1': 'value1', 'key2': 10, 'key3': -10}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4433 次 |
| 最近记录: |