从提供的数据python中创建自定义JSON

时间:2017-05-09 12:09:03

标签: python json mongodb

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

我通过在完全停止的基础上拆分它来分离上面数据中的每个类别。现在我想创建一个显示以下

的JSON对象
{ "categories" : 
          {"category": "british_museum",
           "category": "religion",
           "category": "mesopotamia"
          }
}

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

2 个答案:

答案 0 :(得分:0)

从上述评论中可以看出@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"
  ]
}

答案 1 :(得分:0)

词典 不允许重复键 因此您可以拆分文本并将其作为列表附加,也可以使用"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"
        ]
    }
]