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