我有JSON字符串的数组如何从golang中的JSON数组中删除元素?
例如:
[
{
"name":"abc"
"age":25
}
{
"name":"xyz"
"age":"26"
}
]
在运行时我想从数组中删除“名”。我们该怎么做。我不想解组。
[
{
"age":25
}
{
"age":"26"
}
]
我有JSON字符串的数组如何从golang中的JSON数组中删除元素?
例如:
[
{
"name":"abc"
"age":25
}
{
"name":"xyz"
"age":"26"
}
]
在运行时我想从数组中删除“名”。我们该怎么做。我不想解组。
[
{
"age":25
}
{
"age":"26"
}
]
例如:
package main
import (
"fmt"
"log"
"strconv"
"github.com/tidwall/gjson"
"github.com/tidwall/sjson"
)
func main() {
bJSON := []byte(`
[
{
"name": "abc",
"age": 25
},
{
"name": "xyz",
"age": 26
}
]
`)
newJSON := bJSON
var err error
result := gjson.GetBytes(bJSON, "#.age")
for i := range result.Array() {
newJSON, err = sjson.DeleteBytes(newJSON, strconv.Itoa(i)+".age")
if err != nil {
log.Println(err)
}
}
fmt.Println(string(newJSON))
}
输出:
[
{
"name": "abc"
},
{
"name": "xyz"
}
]
我们可以在不添加“钥匙” –
如果你硬是不想解组的时候,就会做一些类型的正则表达式替换,或者建立一个状态机被卡住(实际上自己解编吧)。如果你问这个问题,那么你不应该采取这种方法。这种方法仅适用于非常高级的用户,除非极少数情况下没有优势。
我假设你只是不想费心编写代码来解组它,尽管如此,并不介意为你工作的工具,即使这涉及到封装下的解组。
如果我对我的猜测是正确的,你可以考虑一个像gabs这样的库(免责声明:我从来没有使用过这个库),它提供了简单的JSON操作。但是当然,它在这个过程中解组JSON,然后当你询问结果时再重新映射它。
如果你不想解组它,唯一的办法就是自己解析字节,你最终会实现一个状态机。 – tazo
如果你真的不能取消它,你或许可以用正则表达式来完成。 – gabeio
取消编组/修改/编组有什么问题?这似乎很简单。 –