如何将包含“ _”的JSON字段拆分为子对象?

通量

我有以下JSON对象,在其中需要对一些标签进行后处理:

{
 'id': '123',
 'type': 'A',
 'fields': 
  {
      'device_safety': 
      {
         'cost': 0.237,
         'total': 22
      },
      'device_unit_replacement': 
      {
         'cost': 0.262,
         'total': 7
      },
      'software_generalinfo': 
      {
         'cost': 3.6,
         'total': 10
      }
  }
}

我需要按以下方式拆分标签名称_

{
 'id': '123',
 'type': 'A',
 'fields': 
  {
      'device': 
      {
         'safety': 
         {
             'cost': 0.237,
             'total': 22
         },
         'unit':
         {
             'replacement':
             {
                  'cost': 0.262,
                  'total': 7
             }  
         }
      },
      'software': 
      {
         'generalinfo':
         {
            'cost': 3.6,
            'total': 10
         }
      }
  }
}

这是我的当前版本,但是我被卡住了,不确定如何处理字段的层次结构:

import json

json_object = json.load(raw_json)

newjson = {}
for x, y in json_object['fields'].items():
    hierarchy = y.split("_")
    if len(hierarchy) > 1:
         for k in hierarchy:
              newjson[k] = ????

newjson = json.dumps(newjson, indent = 4)
schwobaseggl

这是递归函数,它将处理adict并拆分键:

def splitkeys(dct):
    if not isinstance(dct, dict):
        return dct
    new_dct = {}
    for k, v in dct.items():
        bits = k.split('_')
        d = new_dct
        for bit in bits[:-1]:
            d = d.setdefault(bit, {})
        d[bits[-1]] = splitkeys(v)
    return new_dct


>>> splitkeys(json_object)
{'fields': {'device': {'safety': {'cost': 0.237, 'total': 22},
                       'unit': {'replacement': {'cost': 0.262, 'total': 7}}},
            'software': {'generalinfo': {'cost': 3.6, 'total': 10}}},
 'id': '123',
 'type': 'A'}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将JSON对象拆分为数组

如何将包含列表作为字段的熊猫数据框拆分为多索引数据框?

如何将包含字典的列表拆分为单独的列?

包含 None 时如何将字典拆分为列

如何将列表拆分为包含 Python 中重复值的子列表列表?

如何根据 Rails 和 Mongodb 中的字段值将对象数组拆分为子数组

如何将JSON拆分为数组?

如何将逗号和分号分隔的字符串拆分为JSON对象

如何将一串分隔元素拆分为包含相等数量元素的子字符串?

如何将子元素拆分为多行/多行?

Kotlin 如何将列表拆分为子列表

如何将矩阵拆分为较小的子矩阵?

如何将js对象拆分为键值对数组?

如何将JavaScript对象拆分为较小的部分

如何将字符串拆分为相应的对象?

如何将JSON结果拆分为多个Zapier资产?

如何将包含逗号的字符串拆分为另一列?

如何将包含多个值(以逗号分隔)的单元格拆分为单独的行?

如何将仅包含数字的数据框中的列拆分为熊猫中的多列

如何将字符串列拆分为包含 NULL 的行?

如何将PHP CI模型函数拆分为多个“包含”文件

Ruby:如何将包含连续字母组的字符串拆分为这些字母组?

如何将包含列表的数据框单元格拆分为列?

如何将包含多个键值对的列拆分为pyspark中的不同列

如何将包含可变长度字符向量的R列表拆分为特定列?

如何将包含二进制的字符串拆分为数组

如何将包含对象的对象转换为对象数组

如何将包含数组的对象转换为对象的对象

将JSON数组拆分为单独的文件/对象