ホームページ  >  記事  >  バックエンド開発  >  golangの不規則なJSON解析

golangの不規則なJSON解析

(*-*)浩
(*-*)浩オリジナル
2019-12-17 13:26:053012ブラウズ

golangの不規則なJSON解析

json.Unmarshal 操作オブジェクトは [] バイトです。これは、処理されたすべての JSON をメモリにロードする必要があることを意味します。

ロードされた JSON がある場合は、json.Unmarshal を使用した方が高速です。 (推奨学習: go

json.decoderは、io.readerインターフェイスを実装するストリームまたはその他のタイプを操作します。つまり、受信または送信中に解析できるということです。より大きなデータセットを処理するときに、JSON 全体をメモリに再コピーする必要はありません。

最良の選択は次のとおりです:

データが io.Reader から取得された場合、またはストリームからデータを読み取る必要がある場合は、json.Decoder を選択します。

JSON 全体がメモリに読み込まれている場合は、json.Unmarshal を使用してください。

不定の型解析

不定のフィールドを持つ JSON に遭遇した場合、判断する必要がある場合があります。同時に分析します。例:

t1 := `{"type":"a", id:"aaa"}`t2 := `{"type":"b", id:22222}`

インターフェースへのアンマーシャリング{}

最初にインターフェースへのアンマーシャリングを行ってから、後続の処理を実行する前にキー フィールドを決定できます。{}

type Data struct {
    Type string      `json:"type"`
    Id   interface{} `json:"id"`}func decode(t string) {    var x Data
    err := json.Unmarshal([]byte(t), &x)    if err != nil {        panic(err)
    }    if x.Type == "a" {
        fmt.Println(x.Id.(string))
    } else {
        fmt.Println(x.Id.(float64)) //json解析中number默认作为float64解析
    }
}func main() {
    t1 := `{"type":"a", "id":"aaa"}`
    t2 := `{"type":"b", "id":22222}`
    decode(t1)
    decode(t2)
}

結果

aaa
22222

以上がgolangの不規則なJSON解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。