我想使用 python 中的特定键值将示例 JSON 数据转换为嵌套的 JSON

aviboy2006

我有以下 JSON 格式的示例数据:

project_cost_details 是我查询后的数据库结果集。

{
    "1": {
        "amount": 0,
        "breakdown": [
            {
                "amount": 169857,
                "id": 4,
                "name": "SampleData",
                "parent_id": "1"
            }
          ],
         "id": 1,
        "name": "ABC PR"
    }
}

这是完整的 json:https ://jsoneditoronline.org/ ? id =2ce7ab19af6f420397b07b939674f49c

预期输出:https : //jsoneditoronline.org/?id=56a47e6f8e424fe8ac58c5e0732168d7

我有这个示例 JSON,它是我在代码中使用循环创建的。但我坚持如何将其转换为预期的 JSON 格式。我正在获得顺序更改,需要转换为树状或嵌套 JSON 格式。

在 Python 中尝试:


project_cost = {}
        for cost in project_cost_details:
            if cost.get('Parent_Cost_Type_ID'):
                project_id = str(cost.get('Project_ID'))
                parent_cost_type_id = str(cost.get('Parent_Cost_Type_ID'))
                if project_id not in project_cost:
                    project_cost[project_id] = {}
                if "breakdown" not in project_cost[project_id]:
                    project_cost[project_id]["breakdown"] = []
                if 'amount' not in project_cost[project_id]:
                    project_cost[project_id]['amount'] = 0
                project_cost[project_id]['name'] = cost.get('Title')
                project_cost[project_id]['id'] = cost.get('Project_ID')
                if parent_cost_type_id == cost.get('Cost_Type_ID'):
                    project_cost[project_id]['amount'] += int(cost.get('Amount'))
                #if parent_cost_type_id is None:

                project_cost[project_id]["breakdown"].append(
                    {
                        'amount': int(cost.get('Amount')),
                        'name': cost.get('Name'),
                        'parent_id': parent_cost_type_id,
                        'id' : cost.get('Cost_Type_ID')
                    }
                )

从这里我得到示例 JSON。如果仅输入此代码所需的格式,那就太好了。

也试过这里提到的这个解决方案:https : //adiyatmubarak.wordpress.com/2015/10/05/group-list-of-dictionary-data-by-particular-key-in-python/

aviboy2006

我得到了将示例 JSON 转换为预期 JSON 的方法:

data = [
 { "name" : "ABC", "parent":"DEF",  },
 { "name" : "DEF", "parent":"null" },
 { "name" : "new_name", "parent":"ABC" },
 { "name" : "new_name2", "parent":"ABC" },
 { "name" : "Foo", "parent":"DEF"},
 { "name" : "Bar", "parent":"null"},
  { "name" : "Chandani", "parent":"new_name", "relation": "rel", "depth": 3 },
  { "name" : "Chandani333", "parent":"new_name", "relation": "rel", "depth": 3 }
]

result = {x.get("name"):x for x in data}
#print(result)
tree = [];
for a in data:
    #print(a)
    if a.get("parent") in result:
        parent = result[a.get("parent")]
    else:
        parent = "" 
    if parent:
        if "children" not in parent:
            parent["children"] = []
        parent["children"].append(a)

    else:
        tree.append(a)

参考帮助http : //jsfiddle.net/9FqKS/这是我转换为 Python 的 JavaScript 解决方案

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用python将嵌套的JSON数据转换为CSV?

如何将嵌套的 json 转换为 python 数据框

使用 OpenRefine 将 CSV 数据转换为嵌套的 JSON

使用Python将CSV转换为嵌套JSON

如何使用 Python 将 CSV 转换为嵌套的 JSON

将数据框转换为嵌套的json

将嵌套的JSON转换为数据框

将 JSON 数据转换为嵌套字典

将嵌套的Json转换为CSV Python

我想使用Jq将文本文件数据转换为JSON

当我尝试将JSON OBJ转换为数组时,我想使用JSON以表格式显示数据

使用Python将pdf数据转换为JSON格式吗?

使用 Python 将 Json 数据转换为 CSV 文件格式

如何使用python将JSON数据转换为.tsv文件。

如何使用Python将sudoers文件转换为JSON数据?

将json文件转换为dataframe解析嵌套的json数据

将csv数据转换为特定格式的嵌套json

如何使用 Python 将 CSV 文件转换为带有嵌套 json 对象的 JSON 文件?

将嵌套的Json转换为单个键值对

在Python中将CSV数据转换为嵌套JSON

我正在尝试将深度嵌套的 JSON 转换为 Pandas 数据帧

使用 JOLT 转换将示例 JSON 转换为嵌套的 JSON 数组

使用嵌套的 JSON 对象将 SQLDataReader 结果转换为 JSON

使用值作为列将嵌套的dict从json转换为数据帧

使用Json.NET将嵌套的Firebase数据库对象转换为C#对象

使用 pyspark 将数据框列转换为嵌套的 JSON 结构

使用jq(或awk)将高冗余CSV数据转换为嵌套JSON?

如何使用嵌套元素将数据集从 CSV 转换为 JSON?

将pandas DataFrame转换为任意嵌套的JSON数据