从python提供的数据生成自定义JSON

2024-04-25 23:39:55 发布

您现在位置:Python中文网/ 问答频道 /正文

给出的数据:[british_museum.religion.mesopotamia]

我已经在句号的基础上拆分了上面数据中的每个类别。现在我想创建一个JSON对象,它显示以下内容

{ "categories" : 
          {"category": "british_museum",
           "category": "religion",
           "category": "mesopotamia"
          }
}

现在的问题是,给定的数据可以是任意长度的,即在给定的数据中可以有不同数量的类别。对于提供的任何数据,获得JSON对象的通用解决方案是什么? 条件是应该遵循指定的JSON格式。如果有5个类别,则“categories”键内应该有5个“categories”键


Tags: 数据对象json数量解决方案条件类别基础
2条回答

字典不允许重复键因此,您可以拆分文本并将其附加为列表,也可以使用"category1","category2",.....之类的键创建json

import json
data= ["british_museum.religion.mesopotamia"
,"british_museum.religion.mesopotamia1"]
json_data=[]
for word in data:
    json_data.append({"categories": {"category"+str(i): j for i,j in enumerate(word.split("."))}})
json.dumps(json_data)

结果:

[  
    {  
        "categories":{  
            "category1":"religion",
            "category0":"british_museum",
            "category2":"mesopotamia"
        }
    },
    {  
        "categories":{  
            "category1":"religion",
            "category0":"british_museum",
            "category2":"mesopotamia1"
        }
    }
]

或者,如果您可以添加类别作为列表

import json
data= ["british_museum.religion.mesopotamia"
,"british_museum.religion.mesopotamia1"]
json_data=[]
for word in data:
    json_data.append({"categories":word.split(".")})
json.dumps(json_data)

结果:

[  
    {  
        "categories":[  
            "british_museum",
            "religion",
            "mesopotamia"
        ]
    },
    {  
        "categories":[  
            "british_museum",
            "religion",
            "mesopotamia1"
        ]
    }
]

从上面的评论来看,@Craicerjack为这个问题提出了更好的解决方案

我只是把它转换成代码。你可以把它保存到MongoDB

>>> input_string = 'british_museum.religion.mesopotamia'
>>> splitted_values = input_string.split('.')
>>> output={}
>>> output['categories'] = splitted_values
>>> json.dumps(output)

输出:

{
  "categories": [
    "british_museum",
    "religion",
    "mesopotamia"
  ]
}

相关问题 更多 >