1. ホーム
  2. json

[解決済み] Goマップをjsonに変換する

2022-07-27 19:57:31

質問

Go マップを json 文字列に変換しようとしたところ encoding/json Marshal を使って json 文字列に変換しようとしましたが、空の文字列になってしまいました。

以下は私のコードです。

package main

import (
    "encoding/json"
    "fmt"
)

type Foo struct {
    Number int    `json:"number"`
    Title  string `json:"title"`
}

func main() {
    datas := make(map[int]Foo)

    for i := 0; i < 10; i++ {
        datas[i] = Foo{Number: 1, Title: "test"}
    }

    jsonString, _ := json.Marshal(datas)

    fmt.Println(datas)
    fmt.Println(jsonString)
}

私の出力は:

map[9:{1 test} 2:{1 test} 7:{1 test} 3:{1 test} 4:{1 test} 5:{1 test} 6:{1 test} 8:{1 test} 0:{1 test} 1:{1 test}]

[]

本当にどこが間違っているのかわかりません。よろしくお願いします。

どのように解決するのですか?

エラーを発見していれば、このように表示されたはずです。

jsonString, err := json.Marshal(datas)
fmt.Println(err)

// [] json: unsupported type: map[int]main.Foo

JSONでは整数をキーとして使用することはできません。代わりに、これらの値をあらかじめ文字列に変換しておくことができます。 strconv.Itoa .

詳しくはこちらの投稿をご覧ください。 https://stackoverflow.com/a/24284721/2679935