Golang Go语言中生态是否真的很差,有没有API能直接往JSON中追加新的key/value?

发布于 1周前 作者 vueper 来自 Go语言

Golang Go语言中生态是否真的很差,有没有API能直接往JSON中追加新的key/value?

研究了下内置的 encoding/json,以及流行的第三方 JSON 库 jsonitor,还在 github 上搜了搜,基本没找到有这个功能。

别告诉我可以先 Unmarshall 到 map[string]interface{}中再 Marshall,或者直接操作裸[]byte,这根本不是“真正”的解决办法。

80 回复

你应该想到这是个机会,你把这个功能封装好提个 pr 给官方库

更多关于Golang Go语言中生态是否真的很差,有没有API能直接往JSON中追加新的key/value?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你告诉我哪种语言可以不 unmarshal 就能加 key 的?

来了来了,他来了

真的是老鼠精的洞府

序列化后的数据一般都是反序列化之后再修改吧,哪有能直接修改序列化数据的。

世界上最好的语言 PHP 都没有这个 api

封装成一个函数不就有 API 了

你想不 Unmarshall 解决问题?

办法有啊!
你手里拿着 byte array,然后通过你多年编程的经验,猜出来具体需要添加的位置是哪个地方,然后把你的 kv 插进这个位置,

你看这样不就好了?

直接机器码编程

想了想还真的可行啊,如果就添加在最外层的话,直接 从<}">的位置前面插就好了

哈哈哈哈哈哈,给 官方库提个 mr 吧

黑人问号脸

真滴秀,JSON 在编程语言里不都是二等公民吗,都不是原生数据对象,当然要现转换才能修改啊

水贴、已 B 、不送

最近钓鱼贴越来越多了哈

sjson 可以干这事,自己不会搜索不要怪社区(还有标准库为啥要提供这种 JSON path ?不符合大道至简啊🙈

地铁,手机,老头

楼主🎣技术太差,下一个问题

谁说 go 没有,你直接拿到[]byte 的指针,用 unsafe 按着头往里面写不就完事了

大概是指想要 python 字典那种便捷操作吧。

但即使在 python 中严格来说 json 串指的是 json.dumps(dict)后的结果,而不是 dict 。

强类型语言似乎没有办法快捷的给 class 或者 struct 加属性或者字段。

不知道利用反射可不可以,但是利用反射加字段让代码看起来像是起了一个脓包

你有发帖这时间都已经封装完函数了

啊,你们说的生态就是这种呀…
难道不管什么功能都要有个外部依赖库来做的吗…
这种东西自己弄一下也不用费什么力气的吧.

仔细想想?

简单啊,如果 JSON 是标准非空无空白的,直接在倒数第二个字符串位置(“}”之前)插入:
,“key”:"value"
就行了。

但真没必要,不差这个解析和转换的内存和时间

楼上那么多回复让我怀疑 Java 是一门小众语言

楼主说的不就是 Java JsonObject 那样的专用 JSON API 么

#29 无论是什么语言,curd Json 都得反序列化.这贴主的要求是不能反序列化直接写字符串

java 也得先把字符串反序列化成 jsonObject 呀

建议你去用动态脚本语言写,比如 JavaScript
这喷得好奇怪。

建生态的机会来了

你不分析怎么知道一坨字符串里面包含什么东西?你怎么就确定它是 map[string]interface{}?

已 block 不送

??? json 的老爸 js 想操作他都得转实体,要么自己封装要么爱用用不缺你一个

我咋感觉楼主是来钓解决方案的,和 300 元以内的耳机都是辣鸡一样。

话说 map[string]interface{}相当倒胃口

撸起袖子干

楼上的能人不少啊, 楼主只是吐槽不方便, 这么多人都知道这问题也不见人提交, 有人提出这问题就在这说风凉话, 还 tm 钓鱼, 自己钓鱼习惯了吧? 还是难得找到个机会要显摆自己一下?

json 在 js 中算一等公民了,也得先 parse 再操作

#41 是楼主提问方式的问题,明明可以说 “请问一下大家,Golang 中是否存在直接往 JSON 中追加新的 key/value 的 API ?”,非得上来喷一句,这样不被喷才怪了

go 的生态现在不太成熟是事实, 喷 go 的生态我认为也不是不讲道理.

https://github.com/tidwall/sjson 这不是吗?
你上来不问有没有,自己找不到就得出结论说生态差?

用 map 呗 处理完再序列化

请教问题就请教问题,别到处扣帽子。没有一个生态是完美的。

这个问题,他是个问题吗?

事实个屁,自己搜不出来,怪生态?你看这里回复的都给了多少包的地址了!

水平太差 建议转行写 js

引战帖 告辞

正确的提问姿势

气的这么多人都直接贴了库的网址。。。果然是正确的提问姿势

大概还不太知道啥是 JSON,下面都是合法的 JSON 字符串

- “1”
- ““s””
- “true”
- “1.1”
- “[1.1]”
- “{“key”: “value”}”

路过。。。

楼主平安 回复者平安 V2EX 平安

几年前刚开始接触 go,我也被这问题难住了,marshal 来 unmarshal 去,现在我用 python/js,已经看不懂 lz 的问题是啥了。。。

临时用用的话,jq 不舒服吗

v 站上越水的帖子越能火…

学到了,原来这才是提问的正确姿势,回复里的解决办法真不错

为啥不直接用 struct ?静态语言用动态的方法写,感觉有些反模式

SAX 风格的库就可以不做反序列化,C++ 和 Java 的主流库都是支持的吧

这才是正确的提问方式,下次想问问题的朋友可以参考一下

这样的提问方式确实好,就是容易被 b

甚至觉得楼主是来黑 golang 的


楼主 python 版本就是:

为什么我 a = json.dumps(data)后,不能直接往 a 添加一个新的 key-value,python 真是垃圾[狗头]

这是来搞笑的吧

学习了正确的提问方法

SAX 风格不能处理某些合法的 JSON 格式吧,比如#55 提出来的那几种

楼主一边挨着骂一边偷笑,自己搜个锤子,这不就有解决方案了吗

很有道理, 哈哈哈哈哈

楼主你好牛

建议先去把 RFC 4627 了解清楚,JSON 不一定是有 Key 的对象,可能是数组,甚至只是一个 null 或者 false,到时候你怎么插呢?

提问时老老实实遵守《提问的智慧》:问题看起来很好看然而无人问津

直接抛出一个错误答案:跑出一大堆人用正确回答“教育”自己

使用 map[interface{}]interface{}解决问题

php 都需要 json_decode 将 json 转换成数组或者对象后才能修改数据,改完后再 json_encode 回去

作为IT领域GO语言方面的专家,对于Golang(又称Go语言)的生态及JSON操作有深入了解,以下是对该帖子的专业回复:

Golang的生态并不差,相反,它已经在软件开发界取得了显著的地位。其生态系统快速发展,社区活跃度高,企业应用广泛,工具链和库的完善性强。许多大公司如谷歌、Uber、Twitch等都在其核心系统中使用Go语言。

关于Go语言中是否有API能直接往JSON中追加新的key/value,答案是肯定的。在Go语言中,可以使用标准库中的encoding/json包来处理JSON数据。要向JSON中追加新的key/value,可以先将JSON数据解析为map或相应的结构体,然后添加新的键值对,最后再将其转换回JSON格式。这是一个常见的操作,并不复杂。

因此,对于Golang的生态及其JSON处理能力,完全无需担心。Golang是一种高效、简洁且功能强大的编程语言,值得学习和使用。

回到顶部