【问题标题】:Making a custom JSON from provided data python从提供的数据 python 制作自定义 JSON
【发布时间】:2017-05-09 12:09:02
【问题描述】:

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

我已经通过句号拆分来分隔上面数据中的每个类别。现在我想制作一个显示以下内容的 JSON 对象

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

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

【问题讨论】:

  • 不可能存在像{"category": "british_museum", "category": "religion", "category": "mesopotamia"}这样的字典。键必须是唯一的。
  • JSON 不应包含重复的键。
  • 你可以这样使用 {"category1":"british_museum","category2":"religion","category3":"mesopotamia"}
  • 或者这个{ "categories" : ["british_museum", "religion", "mesopotamia" ] }
  • 为什么不只是一个列表(JSON 数组)?

标签: python json mongodb


【解决方案1】:

从上面的 cmets @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"
  ]
}

【讨论】:

  • 如何查询和检查MongoDB中的所有类别?
【解决方案2】:

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

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"
        ]
    }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2020-07-08
    • 2019-05-05
    • 2011-09-09
    相关资源
    最近更新 更多