1. ホーム
  2. json

[解決済み] Golang で文字列を構造体のようにアンマーシャリングする

2022-02-09 23:15:47

質問

Golangで以下のような文字列を渡されました。

var cars = [
    {
       model: "SLR",
       brand: "Mercedes",
       prices: [520, 730],
    },
    {
       model: "M4",
       brand: "BMW",
       prices: [420, 820],
    }
]

JSON文字列でないことは分かっています。 この文字列をアンマーシャルして、各車両のモデルを取得する方法はありますか? 各車両のモデルを取得するにはどうすればよいですか? それとも、そもそもの質問が間違っているのでしょうか?ご意見をお聞かせください。

解決方法は?

入力にyamlを使用するとうまくいくかもしれません。

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

func main() {
    const cars = `[ { model: "SLR", brand: "Mercedes", prices: [520, 730], }, { model: "M4", brand: "BMW", prices: [420, 820], } ]`

    type Car struct {
        Model  string `yaml:"model"`
        Brand  string `yaml:"brand"`
        Prices []int  `yaml:"prices"`
    }

    var carsArr []Car
    if err := yaml.Unmarshal([]byte(cars), &carsArr); err != nil {
        panic(err)
    }

    fmt.Printf("Cars: %+v", carsArr)
    // Cars: [{Model:SLR Brand:Mercedes Prices:[520 730]} {Model:M4 Brand:BMW Prices:[420 820]}]

}

こちらでお試しください。 https://play.golang.org/p/hRQXSes1tGi