如何在JSON-Object

时间:2017-12-06 13:21:25

标签: python json

我有一个Python脚本,使文件具有无效的JSON。 现在我想操作这个JSON文件,使它成为一个有效的JSON文件,在每个对象之间添加一个逗号,在文件a的开头['最后一个']'。 有没有办法单独使用JSON或者我必须找到其他读写函数的方法?

Exsample_File.json:

    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    }
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    }
     .... 
    n times

New_File.json:

    [
    {
    "firstName": "Bidhan",
    "lastName": "Chatterjee",
    "age": 40,
    "email":"bidhan@example.com"
    },
    {
    "firstName": "hanbid",
    "lastName": "jeeChatter",
    "age": 10,
    "email":"example@bidhan.com"
    },
     .... 
    n times
    ]

这是制作此JSON文件的函数。我不想触摸生成str的其他代码。

data = json.loads(str)
    with open('Example_File.json','ab')as outfile:
        json.dump(data, outfile, indent=2)

到目前为止,我没有想法解决这个问题。所以没有可以提供帮助的代码示例。

结果应该像New-File

4 个答案:

答案 0 :(得分:0)

你不能

words.replace('}','},')

这应该取代'}'的所有实例。使用'},'

答案 1 :(得分:0)

首先,我认为有一种方法可以直接将其解析为JSON数组。 但是,如果您的JSON对象没有嵌套,解析它们的简单方法是拆分字符串:

with open(YOUR_FILE) as jsons_file:
    jsons = [x.strip() + '}' for x in jsons_file.read().split('}')][:-1]

现在您可以使用json的库dumpdumps

将其转储到文件或字符串
json.dumps(jsons)

with open(OUT_FILE, 'w') as out_file:
    json.dump(jsons, out_file)

答案 2 :(得分:0)

您可能必须将内容读取为字符串,对其进行操作并以JSON格式加载。像这样的东西,

import json

with open('Example.json','r') as f:
  data = f.read()

data = "[" + data.replace("}", "},", data.count("}")-1) + "]"
json_data = json.loads(data)

似乎您的数据的数字以0开头,因此您可能会遇到异常“ValueError”。您可以参考如何从Why is JSON invalid if an integer begins with 0

处理问题

注意:我从“Example.json”手动删除了0

答案 3 :(得分:0)

要在每个对象之间添加自动逗号并在文件中添加方括号以使其完整json,只需编写一个简单的jq查询

jq -s '.' file_name