Golang は、ネットワーク プログラミング、データ処理などで広く使用されている強力なプログラミング言語です。 Golang では、スライスは動的に拡大または縮小できる非常に一般的に使用されるデータ構造であり、可変量のデータ コレクションを処理するのに非常に適しています。スライスを JSON 形式にシリアル化する必要がある場合は、Golang 標準ライブラリで提供されている json パッケージを使用できます。
この記事では、Golang を使用してスライスを JSON 形式に変換する方法を紹介し、実際のコード例をいくつか示します。これにより、読者が Golang での JSON 変換テクノロジーをよりよく理解し、使用できるようになります。
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]
JSON (JavaScript Object Notation) は、キーと値のペアを使用してデータ構造を記述する軽量のデータ交換形式で、通常は使用されます。クライアントとサーバー間のデータ転送用。 JSON 形式のデータは、Golang を含む任意のプログラミング言語を使用して処理できます。
JSON オブジェクトは 1 対の中括弧で囲まれ、複数のキーと値のペアが含まれています。例:
{ "name": "Tom", "age": 20, "score": [80, 90, 95] }
上記の JSON オブジェクトでは、キーと値のペアのキーが二重引用符で囲まれており、値には文字列、数値、ブール値、配列、またはその他の JSON オブジェクトを指定できます。
Golang では、json パッケージを使用して JSON データをシリアル化および逆シリアル化できます。 Golang スライスを JSON 形式に変換する方法を見てみましょう。
json パッケージを使用してスライスを JSON 形式に変換するのは非常に簡単で、次の手順に従うだけです。 JSON オブジェクトのキーに対応するフィールドである構造タイプを定義します。
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)) }
スライスするための JSON
構造タイプ、JSON オブジェクトのキーに対応するフィールドを定義します;
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) } }
概要
以上がgolangスライスからjsonへの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。