2017-02-17 3 views
0

私のpythonを書くとき、私はそれをしたい:いくつかのlibはgolangでJSONの操作を容易にすることができますか?

d = {"apple": "red", "book":["history", "art", "science"]} 
print json.JSONEncoder().encode(d) 

、私はJSON文字列に

'{"apple":"red","book":["history","art","science"]}' 

を取得するが、私はGolangでそれをしたいとき、物事が複雑になり、私が持っています最初の構造体を定義します

type Gadget struct { 
    Apple string 
    Book []string 
} 
g := Gadget{Apple: "red", Book: []string{"history", "art", "science"}} 
bytes, _ := json.Marshal(g) 
fmt.Println(string(bytes)) 

を私はPythonのようなJSON文字列を操作することができますいくつかのgolang libにはありますか? 処理する構造体が異なるJSONが多数ある可能性があります。それらをすべて定義するのは難しい作業です。私はgolangにインデックスオペレータオーバーロード機構がないlibの原因があるとは思わない。

あなたは何を言っていますか?そう、それはオフサイトリソースを要求するが、それは標準のlibを使用して解決することができるよう

答えて

6

質問がオフトピック次のようになります。

あなたは構造体を必要としない、あなただけの組み込み使用することができますすべてのデータ構造をモデル化できるマップとスライスです。

あなたの例:

err := json.NewEncoder(os.Stdout).Encode(map[string]interface{}{ 
    "apple": "red", 
    "book": []interface{}{ 
     "history", "art", "science", 
    }, 
}) 
fmt.Println(err) 

出力(Go Playground上でそれを試してみてください):

{"apple":"red","book":["history","art","science"]} 
<nil> 
+0

素敵な答え、ありがとう。もし私がjsonの文字列 '{" apple ":" red "、" book ":[" history "、" art "、" science "]} 'を持っていれば、 '{" apple " : "赤"、 "本":["歴史"、 "芸術"、 "科学"、 "哲学"]} '最も速い方法は何でしょうか? –

+3

@刘韦菠これは、次のような答えです。[JSON文字列をマップにマップして編集し、バイトスライスにマーシャリングする](http://stackoverflow.com/questions/28877512/taking-a-json-文字列 - アンマーシャル - それをマップ文字列に変換する -/28878037#28878037)。 – icza

関連する問題