ホームページ  >  記事  >  バックエンド開発  >  golangスライスからjsonへ

golangスライスからjsonへ

WBOY
WBOYオリジナル
2023-05-15 10:18:07658ブラウズ

Golang は、ネットワーク プログラミング、データ処理などで広く使用されている強力なプログラミング言語です。 Golang では、スライスは動的に拡大または縮小できる非常に一般的に使用されるデータ構造であり、可変量のデータ コレクションを処理するのに非常に適しています。スライスを JSON 形式にシリアル化する必要がある場合は、Golang 標準ライブラリで提供されている json パッケージを使用できます。

この記事では、Golang を使用してスライスを JSON 形式に変換する方法を紹介し、実際のコード例をいくつか示します。これにより、読者が Golang での JSON 変換テクノロジーをよりよく理解し、使用できるようになります。

  1. スライスの基本

Golang では、スライスは参照型であり、基になる配列へのポインタ、長さ、容量の 3 つの部分で構成されます。 make 関数を使用してスライスを作成し、その長さと容量を指定できます:

s := make([]int, 5, 10)  // 创建一个长度为5,容量为10的切片

スライスを作成するとき、容量が指定されていない場合、デフォルトと長さは同じになります:

s := make([]int, 5)  // 创建一个长度为5,容量也为5的切片

Use subscripts を渡してスライス内の要素にアクセスして変更することもできます。また、append 関数を使用してスライスに要素を動的に追加することもできます。例:

s := []int{1, 2, 3}
fmt.Println(s[0])  // 输出1
s[1] = 4
fmt.Println(s)  // 输出[1 4 3]
s = append(s, 5)
fmt.Println(s)  // 输出[1 4 3 5]
  1. JSON の基本

JSON (JavaScript Object Notation) は、キーと値のペアを使用してデータ構造を記述する軽量のデータ交換形式で、通常は使用されます。クライアントとサーバー間のデータ転送用。 JSON 形式のデータは、Golang を含む任意のプログラミング言語を使用して処理できます。

JSON オブジェクトは 1 対の中括弧で囲まれ、複数のキーと値のペアが含まれています。例:

{
  "name": "Tom",
  "age": 20,
  "score": [80, 90, 95]
}

上記の JSON オブジェクトでは、キーと値のペアのキーが二重引用符で囲まれており、値には文字列、数値、ブール値、配列、またはその他の JSON オブジェクトを指定できます。

Golang では、json パッケージを使用して JSON データをシリアル化および逆シリアル化できます。 Golang スライスを JSON 形式に変換する方法を見てみましょう。

  1. スライスを JSON に変換

json パッケージを使用してスライスを JSON 形式に変換するのは非常に簡単で、次の手順に従うだけです。 JSON オブジェクトのキーに対応するフィールドである構造タイプを定義します。

    スライス オブジェクトを作成し、シリアル化する必要があるデータを入力します。
  1. json.Marshal を呼び出します。 () シリアル化用の関数、そしてその結果を []byte 型の変数に代入する;
  2. []byte 型の結果を string 型に変換し、端末に出力するか、ファイルに保存します。
  3. 以下は実際のコード例です:
  4. package main
    
    import (
        "encoding/json"
        "fmt"
    )
    
    type Person struct {
        Name string
        Age  int
    }
    
    func main() {
        persons := []Person{
            {Name: "Tom", Age: 20},
            {Name: "Jerry", Age: 22},
            {Name: "Alice", Age: 24},
            {Name: "Bob", Age: 26},
        }
    
        data, err := json.Marshal(persons)
        if err != nil {
            fmt.Println("JSON转换失败:", err)
            return
        }
    
        fmt.Println(string(data))
    }
上記のコードでは、Person 構造タイプを定義し、4 つの Person オブジェクトを含む Person タイプのスライスを作成します。次に、 json.Marshal() 関数を使用してスライスを JSON 形式にシリアル化し、結果を文字列型に変換してターミナルに出力します。

スライスするための JSON

  1. #同様に、json パッケージを使用して、JSON 形式のデータを Golang スライスに逆シリアル化することもできます。手順は次のとおりです:

構造タイプ、JSON オブジェクトのキーに対応するフィールドを定義します;

    JSON データを読み取ります (ファイルまたはファイルから読み取ることができます)。ネットワーク リクエストから取得);
  1. json.Unmarshal() 関数を呼び出して逆シリアル化し、結果をスライス変数に割り当てます。
  2. 以下は実際のコード例です:
  3. package main
    
    import (
        "encoding/json"
        "fmt"
        "io/ioutil"
    )
    
    type Person struct {
        Name string
        Age  int
    }
    
    func main() {
        data, err := ioutil.ReadFile("persons.json")
        if err != nil {
            fmt.Println("读取文件失败:", err)
            return
        }
    
        persons := []Person{}
        err = json.Unmarshal(data, &persons)
        if err != nil {
            fmt.Println("JSON解析失败:", err)
            return
        }
    
        for _, p := range persons {
            fmt.Println(p.Name, p.Age)
        }
    }
上記のコードでは、「persons.json」という名前のファイルを読み取ります。このファイルには、パーソン タイプの JSON 配列が含まれています。次に、 json.Unmarshal() 関数を使用して JSON データをスライス タイプに逆シリアル化し、最後にスライスを反復処理して、各 Person オブジェクトの名前と年齢を出力します。

概要

  1. この記事では、Golang を使用してスライスを JSON 形式にシリアル化する方法を紹介し、実用的なコード例を示しました。 JSON データを Golang スライスに逆シリアル化する方法についても説明し、実用的なコード例も提供しました。このコンテンツが、読者が Golang の JSON 変換テクノロジーをよりよく理解し、使用するのに役立つことを願っています。

以上がgolangスライスからjsonへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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