2 回答
TA貢獻1820條經驗 獲得超3個贊
要解決您的 json 問題,您可以使用一個結構并用 json:"omitempty" 標記每個字段:
package main
import (
"encoding/json"
"fmt"
)
type foostruct struct {
Myfoo string `json:"myfoo,omitempty"`
Yourfoo string `json:"yourfoo,omitempty"`
Ourfoo string `json:"ourfoo,omitempty"`
}
func main() {
j := []byte("{\"myfoo\":\"mine\", \"yourfoo\":\"yours\"}")
fstruct := &foostruct{}
err := json.Unmarshal(j, fstruct)
if err != nil {
panic(err)
}
b, err := json.Marshal(fstruct)
if err != nil {
panic(err)
}
fmt.Println(string(b))
}
您將看到輸出不包含字段“ourfoo”:
{"myfoo":"mine","yourfoo":"yours"}
在這里試試:http : //play.golang.org/p/zKwFaxbLJu
TA貢獻1995條經驗 獲得超2個贊
我在我的應用程序上使用 map 而不是 struct ,尤其是當我想向客戶端返回一個 json 答案時。它給了我更多的靈活性。請看看這個:
package main
import (
"encoding/json"
"fmt"
)
func main() {
m := make(map[string]interface{})
m["appVersion"] = "0.0.1"
m["uploadStatus"] = "success"
strJson, _ := json.Marshal(m)
str := string(strJson)
fmt.Println("---ENCODING--")
fmt.Println(str)
//put it back
fmt.Println("---DECODING--")
n := make(map[string]interface{})
json.Unmarshal([]byte(str), &n)
for key, val := range n {
fmt.Println(key, ":", val)
}
}
輸出是:
---ENCODING--
{"appVersion":"0.0.1","uploadStatus":"success"}
---DECODING--
appVersion : 0.0.1
uploadStatus : success
你可以在這里查看:http : //play.golang.org/p/h4b4-nkZ4M
- 2 回答
- 0 關注
- 232 瀏覽
添加回答
舉報
