我需要为许多JSON对象添加一些值。以下是我需要添加的值的概述。
{'foo':
{'bar':
{'alpha':
[
{'bravo':'charlie'},{'delta':'echo'}
]
}
}
}
在某些情况下,要编辑的对象中缺少foo
键;其他时候一切都在那里,我只需要添加bravo
和delta
。也有可能所需的一切都在那里,没有什么需要改变。有时键alpha
包含字典,而不是字典列表。
我有哪些选项可以修改JSON对象,保留所有原始数据?是否有一个很好的选择来编写一些条件来检查当前存在多少个键然后添加其余的键?
答案 0 :(得分:1)
首先将JSON转换为Python字典。
import json
data = json.loads(myjsonstring)
然后Python词典几乎没有你应该知道的有用方法。
data.get("alpha", 0) # instead of data["alpha"], return default value 0 if alpha is missing
如果你需要在字典中设置一些值,如果还没有:
bravo_value = data.setdefault("bravo", []) # Initializes bravo with an empty list if it is missing
http://www.tutorialspoint.com/python/dictionary_setdefault.htm
在操作结束时将字典转换回JSON:
myjsonstring = json.dumps(data)
答案 1 :(得分:1)
能够创建一个不规则的数据结构,而不必检查结构的每个级别是否存在,或者检查可能嵌套在数据结构中的值,而不是每次尝试访问一个级别帽时都抛出异常。存在被称为自动生存。你可以通过perl获得开箱即用的这种行为。使用python,你必须为它工作一点。