在Python中操作JSON数据时,可能缺少键

时间:2014-08-21 18:11:31

标签: python json python-2.7

我需要为许多JSON对象添加一些值。以下是我需要添加的值的概述。

{'foo':
   {'bar':
      {'alpha':
         [
           {'bravo':'charlie'},{'delta':'echo'}
         ]
      }
   }
 }

在某些情况下,要编辑的对象中缺少foo键;其他时候一切都在那里,我只需要添加bravodelta。也有可能所需的一切都在那里,没有什么需要改变。有时键alpha包含字典,而不是字典列表。

我有哪些选项可以修改JSON对象,保留所有原始数据?是否有一个很好的选择来编写一些条件来检查当前存在多少个键然后添加其余的键?

2 个答案:

答案 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,你必须为它工作一点。

http://en.wikipedia.org/wiki/Autovivification