【问题标题】:Python remove nested JSON key or combine key with valuePython删除嵌套的JSON键或将键与值组合
【发布时间】:2020-03-15 05:06:55
【问题描述】:

我接收到的 json 文件不正确,我正在尝试创建一个临时修复程序,直到文件格式正确。不是将值设置为 derivationsValue 键,而是将其设置为键值对,因此存在一个无关键。我想将内部值设置为外部键。

{        
  "derivationName": "other_lob_subcd",
  "derivationValue": {
     "OOP3": "TENANT"
  }
}

鉴于上面的json,我希望结果是

{        
  "derivationName": "other_lob_subcd",
  "derivationValue": "TENANT"
}

我也可以忍受

{        
   "derivationName": "other_lob_subcd",
   "derivationValue": "OOP3-TENANT"
}

或类似的东西。它不能是另一个 json 元素。

根据@Diana Ayala 的回答,我写了这个来尝试用变量键解决问题。

    for k,v in data['mcsResults']['derivationsOutput']:
        if isinstance(k['derivationValue'], dict):
            for sk, sv in k['derivationValue']:
                k['derivationValue'] = sv

【问题讨论】:

  • 哪个python2或3?

标签: python json


【解决方案1】:

对于给出的示例:

import json

with open('inpt.txt') as json_file:
    data = json.load(json_file)

data['derivationValue'] = data['derivationValue']['OOP3']

给出输出:

{'derivationName': 'other_lob_subcd', 'derivationValue': 'TENANT'}

一般可以看here的解决方案。

【讨论】:

    【解决方案2】:

    你可以这样做:

    val = {        
       "derivationName": "other_lob_subcd",
       "derivationValue": {
          "OOP3": "TENANT"
       }
     }
    
    val["derivationValue"] = val["derivationValue"]["OOP3"]
    print(val)
    

    这将是输出:

    val = {        
       "derivationName": "other_lob_subcd",
       "derivationValue": "TENANT"
     }
    

    【讨论】:

      【解决方案3】:

      您可以使用以下通用代码来满足您的要求。

      import json
      
      filePath = 'file.json'
      
      def getValue(value):
          if type(value) is dict:
              ans = list(value)[0]
              for k in value:
                  ans += '-'+getValue(value[k])
              return ans
          return value
      
      def correct(data):
          for key in data:   
              data[key] = getValue(data[key]) 
          return data
      
      if __name__ == "__main__":
          with open(filePath) as fp:
              data = json.load(fp)
              data = correct(data)
              print (data)
      

      输出:

      D:\>python file.py
      {'derivationName': 'other_lob_subcd', 'derivationValue': 'OOP3-TENANT'}
      

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 2019-11-18
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多