gpt4 book ai didi

json - 使用结构字段(不是 json 键)将结构写入 Json 文件

转载 作者:IT老高 更新时间:2023-10-28 13:06:58 24 4
gpt4 key购买 nike

如何将 json 文件读入 struct,然后将其编码回 json 字符串,其中 Struct 字段作为键(而不是原始的 json 键)?

(请参阅下面的 期望输出到 Json 文件...)

代码:

package main

import (
"encoding/json"
"fmt"
"io/ioutil"
)

type Rankings struct {
Keyword string `json:"keyword"`
GetCount uint32 `json:"get_count"`
Engine string `json:"engine"`
Locale string `json:"locale"`
Mobile bool `json:"mobile"`
}

func main() {
var jsonBlob = []byte(`
{"keyword":"hipaa compliance form", "get_count":157, "engine":"google", "locale":"en-us", "mobile":false}
`)
rankings := Rankings{}
err := json.Unmarshal(jsonBlob, &rankings)
if err != nil {
// nozzle.printError("opening config file", err.Error())
}

rankingsJson, _ := json.Marshal(rankings)
err = ioutil.WriteFile("output.json", rankingsJson, 0644)
fmt.Printf("%+v", rankings)
}

屏幕输出:

{Keyword:hipaa compliance form GetCount:157 Engine:google Locale:en-us Mobile:false}

输出到 Json 文件:

{"keyword":"hipaa compliance form","get_count":157,"engine":"google","locale":"en-us","mobile":false}

想要输出到 Json 文件:

{"Keyword":"hipaa compliance form","GetCount":157,"Engine":"google","Locale":"en-us","Mobile":false}

最佳答案

如果我正确理解您的问题,您要做的就是从您的结构定义中删除 json 标签。

所以:

package main

import (
"encoding/json"
"fmt"
"io/ioutil"
)

type Rankings struct {
Keyword string
GetCount uint32
Engine string
Locale string
Mobile bool
}

func main() {
var jsonBlob = []byte(`
{"keyword":"hipaa compliance form", "get_count":157, "engine":"google", "locale":"en-us", "mobile":false}
`)
rankings := Rankings{}
err := json.Unmarshal(jsonBlob, &rankings)
if err != nil {
// nozzle.printError("opening config file", err.Error())
}

rankingsJson, _ := json.Marshal(rankings)
err = ioutil.WriteFile("output.json", rankingsJson, 0644)
fmt.Printf("%+v", rankings)
}

结果:

{Keyword:hipaa compliance form GetCount:0 Engine:google Locale:en-us Mobile:false}

文件输出为:

{"Keyword":"hipaa compliance form","GetCount":0,"Engine":"google","Locale":"    en-us","Mobile":false}

http://play.golang.org/p/dC3s37HxvZ 运行示例

注意:GetCount 显示为 0,因为它是作为 "get_count" 读入的。如果您想读取具有 "get_count""GetCount" 但输出 "GetCount" 的 JSON,那么您必须做一些额外的解析。

Go- Copy all common fields between structs有关此特定情况的更多信息。

关于json - 使用结构字段(不是 json 键)将结构写入 Json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com