【发布时间】:2016-04-22 11:00:16
【问题描述】:
我正在尝试获取两个由整数和字符串混合组成的 JSON,并使用 python 2.7 将它们组合在一起。
例如:
{"key": {"field_string": ["string"],"field_num": 1}}
{"key": {"field_string": ["another_string"],"field_num": 2}}
我正在尝试做的要求是:
- 密钥将保持不变,合并后需要保持不变
- 整数需要相加,因此 1 + 2 = 3,字符串需要以数组格式相加(它们已经在上面的数组中)。
- 每个 JSON 的字段范围,大多数 JSON 将有 4-7 个字段
基于上述内容,我希望输出的示例:
{"key": {"field_string": ["string","another_string"],"field_num": 3}}
另外,我使用它的项目将在无法访问互联网的机器上,所以如果可能的话,我需要它来使用标准 python 库。
对此的任何帮助将不胜感激。我发现的大多数示例都涉及将两个 JSON 对象组合在一起,但是,整数不会被添加,这是我需要进行的关键部分。
更新
关于这方面的更多背景知识,这是我正在进行的一个项目,我无法在后面详细介绍,但是,我可以给出一个伪代码示例。
我所做的基本想法是,我需要组合很多 JSON。在示例中,我只是将其列为两个,但是在我的代码的最终版本中,它将处理数千个 JSON(大数据项目)。它的 JSON 部分只是我想要完成的一小部分,但却是一个关键部分。
这里是一个 JSON 结构的示例:
{
"key1": {
"blue_data": 12,
"green_data": 0,
"red_data": [],
"yellow_Data": [
"string_1",
"string_2",
"string_3"
],
"foo": "XX",
"bar": "YYY",
"foobar": "ZZZZ"
}
}
但是,有些字段可能会被省略,例如最后 3 个字段可能包含也可能不包含,或者它们的子集。
JSON 对象传递给我的脚本的方式是数组的形式。因此,该数组将保存一系列我使用 for 循环迭代的 JSON。
for key in list_of_keys:
for item in json_list:
json_dump_data = json.loads(item)
try:
json_blue_data[key]
except:
json_blue_data[key] = int(json_dump_data["blue_data"])
else:
json_data_data[key] = json_blue_day[key] + int(json_dump_data["blue_data"])
我对每个值都做了与上述类似的事情,我基本上会将每个字段分解为一个 dict 对象并在最后将它们组合起来。我知道这不是最有效的方法,但是我是新手并且使用预先存在的代码。
【问题讨论】:
-
将 JSON 转换为 Python 对象(字典),做你需要的并将 Python 对象(字典)转换为 JSON - 使用
JSON标准模块。 -
请提供一个演示
A range of fields per JSON, most JSON's will have between 4-7 fields要求的示例
标签: python json python-2.7 dictionary bigdata