7
Python 和 Javascript 的 JSON 对接的 NaN 问题
source link: https://zhiqiang.org/coding/json-nan-between-python-and-javascript.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Python 和 Javascript 的 JSON 对接的 NaN 问题
一般而言,在 Python 里:
obj_json = json.dumps(obj)
在 Javascript 里面再:
obj = JSON.parse(obj_json);
但NaN
是一个特例,它在 Python 里被转为字符串"NaN",并且可以被json.loads
识别。但它无法被 Javascript JSON 模块识别。在 Javascript 中,JSON.stringify(NaN)
被转为"null",并且无法转回。其原因是NaN
不在 json 标准内。
似乎没什么好办法,可以自己定义一个dumps
:
import json import math def dumps(obj, *args, **kwargs): def consistent(obj): if math.isnan(obj) or math.isnan(obj): return None if isinstance(obj, dict): for key, value in obj.items(): obj[key] = consistent(value) elif isinstance(obj, list): for idx, value in enumerate(obj): obj[idx] = consistent(value) return obj return json.dumps(consistent(obj), *args, **kwargs)
Q. E. D.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK