首页 > 解决方案 > 在Python中将JSON字符串数组转换为对象数组

问题描述

我有 JSON 字符串数组,我需要将其转换为对象数组(即,将 JSON 转换为相应的对象)而不使用 for 循环。

源代码:(输入数据)

data = ['[1,2,3]', '[4,5,6]', '[7,8,9]']

所需输出:

[[1,2,3], [4,5,6], [7,8,9]]

我已经在使用以下解决方案

import json

data = ['[1,2,3]', '[4,5,6]', '[7,8,9]']
output = []
for item in data:
    output.append(json.loads(item))

目前我有大量的 JSON 字符串(大约 10 万条记录),而且每个 JSON 字符串数组内部包含大约 5 万条记录。在执行时,它需要超过 3GB 的 RAM 来处理。

注意:隐含的输出是一个 2-dim 数组[][]。第一维是大约 100K 记录第二维包含大约 50K 记录。总共 100K * 50K 项。

在转换时,转换 JSON 需要更多时间(对于上述方法)。请帮助我在没有 for 循环的情况下转换 JSON 字符串的想法。

标签: pythonarraysjsonpython-3.xdeserialization

解决方案


现在解决方案看起来很连贯,但这很有效,并且对您进行优化很有用。将完整列表转换为 str 然后'使用 str 函数删除所有单个逗号并加载应用 json,万岁这对我有用。

data = ['[1,2,3]', '[4,5,6]', '[7,8,9]']
r = str(data).replace("'",'')

import json
data = json.loads(r)

现在您data将成为列表列表而无需循环。你可以做到这一点。

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

推荐阅读