golangでjsonを読み取る方法

WBOY
リリース: 2023-05-14 20:56:06
オリジナル
1630 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート