ホームページ > バックエンド開発 > Golang > Go で混合型の JSON 配列をシリアル化する方法は?

Go で混合型の JSON 配列をシリアル化する方法は?

Patricia Arquette
リリース: 2024-12-07 07:01:12
オリジナル
256 人が閲覧しました

How to Serialize Mixed-Type JSON Arrays in Go?

Go で混合型 JSON 配列をシリアル化する方法

チャレンジ

JSON の作成文字列、浮動小数点数、および浮動小数点数の混合など、異種データを表す配列。 Unicode 文字は、配列内の混合型がサポートされていないため、Go では困難になる可能性があります。

解決策

この制限を克服するには、Go のカスタマイズ可能な JSON を活用できます。 json.Marshaler インターフェイスと json.Unmarshaler インターフェイスを実装することによるシリアル化メカニズム。カスタム型でこれらの関数を定義することにより、データのシリアル化と逆シリアル化の方法を制御できるようになります。

シリアル化 (マーシャリング)

混合型データをシリアル化するにはJSON 配列に変換するには、カスタム タイプの MarshalJSON 関数を作成します。この関数では、interface 要素の中間スライスを作成し、シリアル化する値をそれに埋めます。{}次に、スライスで json.Marshal 関数を使用して、データの JSON 表現を生成します。

逆シリアル化 (アンマーシャリング)

同様に、逆シリアル化の場合、 UnmarshalJSON 関数。ここでは、まず json.Unmarshal 関数を使用して、受信した JSON バイトを解析して、interface 要素の中間スライスに入れます。{}次に、スライスから値を手動で抽出し、カスタム タイプのフィールドに割り当てます。

次の例は、混合オブジェクトをシリアル化および逆シリアル化する方法を示しています。 -型データ構造:

package main

import (
    "encoding/json"
    "fmt"
)

type Row struct {
    Ooid  string
    Score float64
    Text  string
}

func (r *Row) MarshalJSON() ([]byte, error) {
    arr := []interface{}{r.Ooid, r.Score, r.Text}
    return json.Marshal(arr)
}

func main() {
    rows := []Row{
        {"ooid1", 2.0, "Söme text"},
        {"ooid2", 1.3, "Åther text"},
    }
    marshalled, _ := json.Marshal(rows)
    fmt.Println(string(marshalled))
}
ログイン後にコピー

結論

json.Marshaler インターフェイスと json.Unmarshaler インターフェイスを実装することにより、Go で混合型のデータ構造を処理する柔軟性が得られます。このアプローチにより、シリアル化と逆シリアル化のプロセスをカスタマイズして、目的の JSON 配列形式を生成できます。

以上がGo で混合型の JSON 配列をシリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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