如何将json文件读入结构体,然后将其作为键(而不是原始的json键)备份为json字符串?
(见Desired Output to Json File
下文......)
码:
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)
}
Run Code Online (Sandbox Code Playgroud)
屏幕输出:
{Keyword:hipaa compliance form GetCount:157 Engine:google Locale:en-us Mobile:false}
Run Code Online (Sandbox Code Playgroud)
输出到Json文件:
{"keyword":"hipaa compliance form","get_count":157,"engine":"google","locale":"en-us","mobile":false}
Run Code Online (Sandbox Code Playgroud)
期望输出到Json文件:
{"Keyword":"hipaa compliance form","GetCount":157,"Engine":"google","Locale":"en-us","Mobile":false}
Run Code Online (Sandbox Code Playgroud)
Mom*_*mer 24
如果我正确理解你的问题,你要做的就是从结构定义中删除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)
}
Run Code Online (Sandbox Code Playgroud)
结果是:
{Keyword:hipaa compliance form GetCount:0 Engine:google Locale:en-us Mobile:false}
Run Code Online (Sandbox Code Playgroud)
文件输出是:
{"Keyword":"hipaa compliance form","GetCount":0,"Engine":"google","Locale":" en-us","Mobile":false}
Run Code Online (Sandbox Code Playgroud)
在http://play.golang.org/p/dC3s37HxvZ上运行示例
注意:GetCount显示0,因为它被读入"get_count"
.如果你想读入具有"get_count"
vs.的JSON "GetCount"
,但输出"GetCount"
那么你将不得不做一些额外的解析.
有关此特定情况的其他信息,请参阅Go-复制结构之间的所有常用字段.
归档时间: |
|
查看次数: |
33274 次 |
最近记录: |