我有一个函数将数据写入缓存,其中数据必须序列化为json格式的字符串。而不是检查输入data
是否是有效的json字符串(即try-except语句),我可以直接调用json.dumps(data)
吗?也就是说,如果输入data
已经序列化为json格式,那么调用json.dumps(data)
是否无害?
答案 0 :(得分:2)
也就是说,如果输入数据已经被序列化为json格式,那么调用
json.dumps(data)
是否无害?
好吧,我认为它的结果仍然是一个有效的JSON字符串,这是无害的。但在这种情况下,仅使用s = '{}'
甚至更多无害。
其中任何一个都不是有用的; json.dumps(json.dumps(obj))
不会向您提供可以解码为obj
的内容,它会为您提供可以解码为json.dumps(obj)
的内容,这是无用的。
我想你可以通过一遍又一遍地调用json.loads
来处理它,直到它加注,但是,除了复制你想要避免的东西之外(需要try
/ except
)如果你想要发送的实际值是一个碰巧是某种东西的有效JSON编码的字符串(例如,如果你问我"我点击什么来格式化SO&#34上的代码,那将会做错事) ;,我回复了{}
,你对"{}"
字符串进行了双重编码,你得到一个空字典而不是我的字符串),这会使调试错误变得更加困难,所以上。
所以,不,不要这样做。
答案 1 :(得分:0)
答案是否定的:
printArray
不等同于
json.dumps(json.dumps(a))
因为第二个会将a序列化为一个字符串,第一个将序列化为字符串然后将此字符串序列化为表示此字符串的字符串
示例:
json.dumps(a)