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

我有以下 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/


汪汪一只猫
浏览 81回答 2
2回答

米琪卡哇伊

我得到了将示例 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 解决方案

胡说叔叔

您似乎想从字典中获取值列表。result = [value for key, value in project_cost_details.items()]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python