Go
投稿日

【Go】Json読み込み基本 – フィールドマッピング

jsonのキー名はスネークケース(ex full_name)で記載されている事が多いです。

このような場合、jsonのキー名と構造体のフィールド名をマッピングさせる事ができます。

サンプルJSONファイル

キー名をスネークケースで記載しています。

{
    "name": "sample_name",
    "events": [
        {
            "age": 18,
            "name": "卒業",
            "date_time": "2002-03-30 12:12:12"
        },
        {
            "age": 22,
            "name": "入社",
            "date_time": "2005-04-01 09:00:00"
        }
    ]
}

構造体フィールドマッピング

構造体のフィールドへマッピングさせるには、構造体を定義するフィールドへ以下のような記述をします。example の記載はなくても大丈夫です。

type event struct {
	Age      int    `json:"age" example:"10"`
	Name     string `json:"name" example:"eventName"`
	DateTime string `json:"date_time" example:"2022-12-12 12:12:12"`
}

サンプル処理

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

// Jsonの内容を格納する構造体
type history struct {
	Name   string  `json:"name" example:"sampleName"`
	Events []event `json:"events"`
}

type event struct {
	Age      int    `json:"age" example:"10"`
	Name     string `json:"name" example:"eventName"`
	DateTime string `json:"date_time" example:"2022-12-12 12:12:12"`
}

func main() {

	h := history{}

	// ファイル読み込み
	f, err := os.Open("sample.json")
	if err != nil {
		return
	}

	// デコード
	json.NewDecoder(f).Decode(&h)

	// 結果を表示
	fmt.Println(h) // {sample_name [{18 卒業 2002-03-30 12:12:12} {22 入社 2005-04-01 09:00:00}]}
}

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.