读取json5文件倒是很简单,但我没找到能保存json5的方法,要保留注释
谢谢
在 Go 语言中,标准库 encoding/json
并不直接支持 JSON5 格式,JSON5 是 JSON 的一个超集,允许一些额外的语法,比如允许在对象和数组中使用尾逗号,支持单行注释(使用 #
开头)等。
目前,Go 语言的第三方库中有支持 JSON5 格式的库,例如 github.com/json-iterator/go
提供了对 JSON5 的支持。要使用这个库来读写 JSON5 文件,你需要先安装它:
go get github.com/json-iterator/go
安装完毕后,你可以使用 json-iterator
库来读取和写入 JSON5 文件,同时保留注释。以下是一个简单的例子:
package mainimport ( "fmt" "io/ioutil" "log" "github.com/json-iterator/go")func main() { // JSON5 数据,包含注释 json5Data := ` { # 这是一个注释 "name": "John", "age": 30, "city": "New York" # 另一个注释 } ` // 写入 JSON5 到文件 err := ioutil.WriteFile("data.json5", []byte(json5Data), 0644) if err != nil { log.Fatalf("Unable to write file: %v", err) } // 读取 JSON5 文件 data, err := ioutil.ReadFile("data.json5") if err != nil { log.Fatalf("Unable to read file: %v", err) } // 使用 json-iterator 解析 JSON5 var obj map[string]interface{} err = jsoniter.Unmarshal(data, &obj) if err != nil { log.Fatalf("Error parsing JSON5: %v", err) } // 输出解析后的数据 fmt.Println(obj) // 如果你想将解析后的数据再次保存为 JSON5,并保留注释, // json-iterator 并不直接支持这一点,因为注释在 JSON5 中是可选的, // 而库通常只关心数据部分,而不是注释。 // 如果需要保留注释,你可能需要手动处理,或者使用其他支持 JSON5 注释的库。}
请注意,尽管 json-iterator
支持 JSON5 的大部分特性,但它可能不会保留原始 JSON5 文件中的注释,因为注释在 JSON5 中是可选的,并且通常被视为非规范部分。如果你想在解析和序列化时保留注释,你可能需要自行处理,或者使用其他专门处理 JSON5 的库(如果有的话)。
截至 2021 年,对于 JSON5 的支持在 Go 语言社区中并不是非常普遍,因此可用的库可能比较有限。如果 json-iterator
或其他库无法满足你的需求,你可能需要自行实现 JSON5 的读写逻辑,或者考虑使用其他支持 JSON5 的编程语言。
JSON 是很严格的,主键必须在引号中,字符串必须用双引号,对象和数组不能有逗号结尾,不能有注释。这些在过去都是必须的,但是随着支持 ECMAScript 5 的浏览器引擎的出现,例如 V8,这些限制就显得很臃肿。 JSON5 和 JSON 的关系就像 ECMAScript 5 和 ECMAScript 3 的关系。JSON5 同样是 ECMAScript 5 的严格的子集。 示例 { // c
Go Env: goarch=“AMD64” goroot=“/usr/local/go” goTooldir=“/usr/local/go/pkg/tool/linux_amd64” go15vendorexperiment=“1” go版本GO1.6.3 Linux/AMD64 这个问题发生在高负载的“性能测试环境”库贝-APIServer上。库贝-Apiserver恐慌和退出: 相应源代码:
我有一个关于Firestore数据库中读/写的问题。情况是: 我有一个集合“城市”(例如20个城市),它有一个子集合“餐厅”(例如500家餐厅): 现在我的问题是:当我想得到一个城市中的所有餐厅时,FiRecovery会支付多少次读取费用?500? 当我想添加一家餐厅时:是否只需要写一封信就可以将此文档添加到子集合中?
现在,每当在我的数据库中的表上发生插入/更新/删除时,我需要向其他系统发送消息,这些系统需要了解我的系统中的更改,因为我的数据库是主数据,所以这里发生的任何更改都需要投射到下游系统,以便它们获得最新的数据并在其系统中维护这些数据。为此,我可以使用MQ或Kafka,所以每当有变化时,我可以生成关键消息并将其放入MQ或使用Kafka进行消息传递。 到目前为止,我还没有像我想的那样使用事件源,因为我没有
是否有任何现有的库允许没有NFC芯片的Android平板电脑(4.0.4)与外部USB NFC读写器接口?
问题内容: 我有一个不断从网站获取信息并不断更新的程序。到目前为止,我将所有这些信息存储在中,然后在完成后将其写入文本文件。 我需要操纵这些信息;但是,它创建了一个庞大的文本文件,并且我花时间太长,因此无法不断地将信息写入文本文件。因此有人告诉我要研究使用数据库。我曾经使用过的唯一数据库是网站的MySQL数据库,从来没有使用过Java。 有什么办法可以使数据库本地化?就像仅在我的计算机上一样(当我