Python 将函数编码为JSON

Python 将函数编码为JSON,python,json,python-2.7,Python,Json,Python 2.7,我有一个带有操作符模块中元素的数组。我尝试用JSON存储这个,但是得到了以下错误消息 import operator as op import json array = [1,op.ge] json_encoded = json.dumps(array) f = open("test.json","w") f.write(json_encoded) f.close() TypeError:JSON不可序列化 是否有解决方法或其他方法来存储此信息?您可以使用该模块,该模块也可以序列化对象: im

我有一个带有
操作符
模块中元素的数组。我尝试用JSON存储这个,但是得到了以下错误消息

import operator as op
import json
array = [1,op.ge]
json_encoded = json.dumps(array)
f = open("test.json","w")
f.write(json_encoded)
f.close()
TypeError:JSON不可序列化

是否有解决方法或其他方法来存储此信息?

您可以使用该模块,该模块也可以序列化对象:

import pickle
...
pickle_encoded = pickle.dumps(array)
...

Pickle将编写一个字节流,与JSON相比,字节流是人类无法读取的。

是否将函数存储为JSON?为什么?嗨,Lutz,我正在随机生成函数并选择性能最好的函数,因此需要一种存储方法;)如何生成它们?你将它们写入Python文件吗?@LutzHorn-我随机选择运算符、数字等,并将它们构建成字典或数组。最好的执行者将被选择并进行变异。在PERL中,我将使用eval,但只是学习Python,每个变量都作为条件放置到位。不确定这是否有意义,但似乎有效。啊!只是打我一顿:)不幸的是,我不确定这是否一直有效。。。如果您尝试,它只是将函数名存储在pickle文件中。因此,它适用于内部函数,但如果它是您自己的函数,则将其加载回新会话将指向一个函数,但该函数可能尚未导入。如果他试图滥用这个存储过程,它可能不会工作…@CorleyBrigman-谢谢你的提示;我在运行时使用存储数据中的信息构建函数,因此我认为这应该可以实现。如果是这样,那么您可以存储名称-存储一个带有名称的字符串,并在创建函数对象时创建一个字符串字典。您的代码将不得不稍微更改以调用f_dict[f_name],而不是直接调用f_name(),但这是次要的。。。