Go 言語は、厳密に型指定されたプログラミング言語であり、ネットワーク プログラミングやビッグ データ処理によく使用されます。 JSON は軽量なデータ交換形式として、ネットワーク伝送におけるデータ送受信に広く使用されています。 JSON データの読み取りは、Go 言語では非常に一般的なタスクです。さて、今回はGolangを使ってJSONデータを読み込む方法を紹介します。
1. Golang での JSON 構造の使用
Golang では、構造を使用して JSON 形式を定義し、json.Unmarshal() 関数を使用して JSON データを解析して実装できます。読み取りの JSON 配列。次のコードは、JSON データから配列を読み取る方法を示しています。
package main import ( "encoding/json" "fmt" ) type Book struct { Title string `json:"title"` Author string `json:"author"` Price string `json:"price"` } func main() { jsonData := `[{"title":"Golang实战开发","author":"张三","price":"100元"}, {"title":"深入浅出Go","author":"李四","price":"80元"}]` var books []Book json.Unmarshal([]byte(jsonData), &books) for _, book := range books { fmt.Println("Book Title: ", book.Title) fmt.Println("Book Author: ", book.Author) fmt.Println("Book Price: ", book.Price) } }
上記のコードでは、まず各書籍の属性情報を表す Book 構造体を定義します。この構造では、json タグを使用して JSON フィールドをバインドし、JSON データを正しく読み取れるようにします。
次に、JSON 文字列を Book タイプのスライスに解析する方法を示します。コードでは、まず空のスライスを作成して、解析されたデータを保存します。次に、json.Unmarshal()
関数を呼び出し、JSON データと、作成した空のスライスへのポインターを渡します。このとき、関数は自動的に JSON 文字列を解析し、データを Book タイプのスライスに解析します。
最後に、解析したばかりのスライスを走査し、各書籍の属性情報を端末に出力します。プログラムを実行すると、次の出力が表示されます:
Book Title: Golang实战开发 Book Author: 张三 Book Price: 100元 Book Title: 深入浅出Go Book Author: 李四 Book Price: 80元
2. Interface{} を使用して JSON データを読み取ります
一部のシナリオでは、JSON データの場所がわかりません。特定の構造では、現時点では、interface タイプの変数を使用して JSON データを処理できます。{}次のコードは、interface{} タイプを使用して、構造が不明な JSON オブジェクトを読み取る方法を示しています。{}
package main import ( "encoding/json" "fmt" ) func main() { jsonData := `{"name":"张三","age":20}` var unknown map[string]interface{} json.Unmarshal([]byte(jsonData), &unknown) for key, value := range unknown { fmt.Printf("%v : %v ", key, value) } }
上記の例では、インターフェイス{} タイプのマップを使用して未知の構造の JSON データを受信するため、事前に構造を定義する必要はありません。 json.Unmarshal()
関数は、JSON 文字列を解析して map[string]interface{} タイプの変数にし、for ループを使用して変数を走査し、そのキーと値をそれぞれ出力します。プログラムを実行すると、次の出力が表示されます:
name : 张三 age : 20
3. 非構造型を使用して JSON データを読み取ります
さらに、小さな JSON オブジェクトを扱う場合、または単に必要な場合一部のデータを読み取る場合、最初に構造を定義する必要はなく、値変数を定義してから、JSON 文字列を解析してその変数に直接入れるだけで済みます。以下のコードは、非構造型を使用して JSON オブジェクトを読み取る方法を示しています。
package main import ( "encoding/json" "fmt" ) func main() { jsonData := `{"name":"张三","age":20}` var unknown interface{} json.Unmarshal([]byte(jsonData), &unknown) m := unknown.(map[string]interface{}) fmt.Println(m["name"], m["age"]) }
上記のコードでは、interface{} 型の変数を使用して JSON データを受け取り、型アサーションを使用してそれを型 map[string]interface{} に変換します。次に、マップ内の「名前」フィールドと「年齢」フィールドを取り出し、出力を印刷しました。
プログラムを実行すると、次の出力が表示されます。
张三 20
概要
Golang で JSON データを読み取るのは非常に便利です。構造体を使用して JSON 形式を定義すると、プログラムをより明確にできます。interface{} 型の変数を使用すると未知の構造の JSON データを受け取ることができ、非構造型を使用するとコードが簡素化され、プログラムの実行効率が向上します。もちろん、JSON データを読み取る上記 3 つの方法には長所と短所があり、さまざまなシナリオに応じて対応する方法を柔軟に選択できます。
以上がgolangでjsonを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。