TAKEO

TAKEO

GoでJsonを扱う

まとめ

  • Jsonを構造体に変換する
  • 構造体をJsonに変換する

実装例

example.go
Copied!!
package main

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

type Person struct {
	Name     string `json:"name"`
	Age      int    `json:"age"`
	Birthday string `json:"birth"`
}

func main() {
	// // JSON data to be converted to a struct
	jsonData := `{"name": "Alice", "age": 30, "birth": "1994/03/03"}`

	// Convert JSON to struct
	var person Person
	err := json.Unmarshal([]byte(jsonData), &person)
	if err != nil {
		log.Fatalf("Error converting JSON to struct: %v", err)
	}

	fmt.Printf("Struct: %+v\n", person)

	// Convert struct back to JSON
	newJsonData, err := json.Marshal(person)
	if err != nil {
		log.Fatalf("Error converting struct to JSON: %v", err)
	}

	fmt.Printf("JSON: %s\n", newJsonData)
}
json-array.go
Copied!!
package main

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

type Person struct {
	Name     string `json:"name"`
	Age      int    `json:"age"`
	Birthday string `json:"birth"`
}

type Persons []Person

func main() {
	jsonArray := `[{"name": "Alice", "age": 30, "birth": "1994/03/03"},{"name": "Hikaru", "age": 25, "birth": "1999/01/01"}]`

	var persons Persons
	err := json.Unmarshal([]byte(jsonArray), &persons)
	if err != nil {
		log.Fatalf("Error converting JSON to struct: %v", err)
	}
	fmt.Printf("List of struct: %+v\n", persons)

	newJsonArray, err := json.Marshal(persons)
	if err != nil {
		log.Fatalf("Error converting struct to JSON: %v", err)
	}

	fmt.Printf("JSON: %s\n", newJsonArray)
}