Python - 如何从数组中复制所有数据

时间:2017-07-28 04:32:23

标签: python json list firebase

目前,我正在将一个数据库从firebase导出为JSON,但它将作为一个数组出现。

[{"ConnectionTime": 19.23262298107147, "objectId": "01331oxpVT", "FirmwareRevision": "201504270003 Img-B", "DeviceID": "EDF02C74-6518-489E-8751-25C58F8C830D", "PeripheralType": 4, "updatedAt": "2015-10-09T04:01:39.569Z", "Model": "Bean", "HardwareRevision": "E", "Serial": "Serial Number", "createdAt": "2015-10-09T04:01:39.569Z", "Manufacturer": "Punch Through Design"}, {"ConnectionTime": 0.3193170428276062, "objectId": "018Mv1g6I8", "DeviceID": "42635033-DF3A-4109-A633-C3AB829BE114", "PeripheralType": 2, "updatedAt": "2015-12-08T04:20:41.950Z", "createdAt": "2015-12-08T04:20:41.950Z"}]

然后我收到此错误 - Start of array encountered without start of object.'}]

如何将其更改为不是数组而只是数据列表。我还需要在每组数据之间换行,但我假设一旦我从数组中获取数据,我现在拥有的代码将会这样做。我的代码如下。谢谢你的帮助!

firebase = firebase.FirebaseApplication('https://dataworks-356fa.firebaseio.com/')
result = firebase.get('/connection_info_parse', None)
# id_keys = map(str, result.keys()) #filter out ID names


with open("firetobqrestore1.json", "w") as outfile:
#   for id in id_keys:
  json.dump(result, outfile, indent=None)
  outfile.write("\n")

2 个答案:

答案 0 :(得分:1)

如果未解析列表的元素(它们是字符串),则循环遍历列表并使用json.loads()将每个元素转换为json。然后,您可以使用json.dumps()

如果已经解析了列表的元素,那么只需遍历列表并使用json.dumps()。

答案 1 :(得分:1)

听起来你工作流程中的某些东西需要换行符分隔的JSON,尽管你还没有明确说明是什么给你这个错误。

有了这个警告,我认为这就是你要找的东西:

import json

with open("firetobqrestore1.json", "w") as outfile:
    for line in result:
        json.dump(line, outfile, indent=None)
        outfile.write("\n")

这会将各个json对象写入每一行。

这也假设result是一个实际的python对象而不是JSON字符串。如果它是一个字符串,您需要先使用以下内容解析它:

result = json.loads(result)