0

我正在尝试ISOWeek使用 python 2.7 的内置json模块对自定义 python 类的实例进行编码。我希望它不是编码为 JS 字符串(例如"2012-08"),而是编码为构造函数调用:new ISOWeek({year: 2012, kw: 8}). Python 的json文档说我应该继承JSONEncoder并覆盖该default方法,但是我只能从中返回另一个 JSON 可序列化对象,而不是实际的序列化。查看json.py源代码,我看不到破解模块的明显方法。有什么建议么?

4

2 回答 2

2

我建议不要将构造函数调用直接放入 JSON 中(这使得 JSON 无效),我建议您格式化数据以便您知道发生了什么,并且只需修改 JS 以进行正确的转换,例如,而不是以下:

{"date": new ISOWeek({year: 2012, kw: 8})}

我会建议这样的事情:

{"date": ["ISOWeek", {"year": 2012, "kw": 8}]}
于 2012-08-27T17:37:44.100 回答
1

我认为这不是有效的 JSON。请参阅http://www.json.org/。您可以在 JavaScript 中执行此操作,但在 JSON 中,您仅限于基本类型(字符串、数字、布尔值、null 和这些类型的列表/字典)。

您可以将其序列化为构造函数的字符串版本,或包含相关信息的其他对象。但是,您需要以一种或另一种方式在接收端进行处理,以将其解码为您的 ISOWeek 对象。

于 2012-08-27T17:36:59.157 回答