如何修改大JSON文件

时间:2019-08-30 17:07:41

标签: json go

我有一个带有多层嵌套的大型json文件。现在,我需要使用Go代码修改此文件中每个键的值。我知道两种方法:第一种是获取每个密钥,然后修改其值,但是毫无疑问,此方法太复杂且容易出错。 第二个方法是将整个json文件序列化为一个struct,然后修改struct字段,然后反序列化。但是,这种情况下需要定义几百行的结构,这也非常复杂。

还有其他方法吗?

例如我的json就是这样,但是更大,超过100行:

{
    "user": [{
        "cdb_id":"",
        "firstname":"Tom",
        "lastname":"Bradley",
        "phone":14155555555,
        "email":"tom@gmail.com",
        "address":[{
            "street":"4343 shoemaker ave",
            "city":"Brea",
            "zip":"92821",
            "country":"USA"
        }],
        "authenticators":[{
            "name":"Lisa Hayden",
            "phone":15625555555
        },{
            "name":"Pavan M",
            "phone":17145555555
        }],
        "voice_sig":"242y5-4546-555kk54-437879ek545",
        "voicesig_created_time":"2017-08-02T21:27:44+0000",
        "status":"verified"
    }]
}

我需要修改“ cdb_id” /“姓氏” /“街道” /“电话” /“ voice_sig” .....所有这些键的值,除了构造一个结构或一键获取键的值外,修改,我还有其他方法吗?

这些键的新值将是来自网页的POST请求。

2 个答案:

答案 0 :(得分:0)

您可以使用json指针:

https://godoc.org/github.com/go-openapi/jsonpointer

或者,您可以在map [string] interface {}中阅读它并逐步进行操作,但这很繁琐。

答案 1 :(得分:0)

现在,我的方式是使用此网站,将我的Json切换为struct,然后一步一步地进行修改。但是它只是认为这不是一个好方法,所以我渴望一种更好的方法。 http://json2struct.mervine.net/

dataset  = [
    {"instrumentToken":1, time: 9:15:00.200, other data...},
    {"instrumentToken":2, time: 9:15:00.200, other data...},
    {"instrumentToken":3, time: 9:15:00.200, other data...},
    {"instrumentToken":4, time: 9:15:00.200, other data...},
    {"instrumentToken":5, time: 9:15:00.200, other data...},
    ...
    ]