我有一个带有多层嵌套的大型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请求。
答案 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...},
...
]