ホームページ  >  記事  >  バックエンド開発  >  golang でデータを json 形式に変換する方法について説明します。

golang でデータを json 形式に変換する方法について説明します。

PHPz
PHPzオリジナル
2023-03-22 14:22:401741ブラウズ

インターネット時代の到来により、データの送信と処理はますます重要になってきました。最新のソフトウェア開発プロセスでは、データを処理する能力が非常に重要です。最新のプログラミング言語として、Golang 言語は強力なデータ処理機能を備えています。その中でも、Golang の構造を JSON 形式に変換することは非常に一般的です。この記事では、Golang の JSON への変換方法と、それを Golang で使用する方法について説明します。

JSON エンコードとデコードに Golang 標準ライブラリを使用する

Golang は、JSON 形式のエンコードとデコードを処理するための標準ライブラリを提供します。 Golang の標準ライブラリでは、encoding/json パッケージは、JSON 形式を Golang 型に変換したり、逆に変換したりするためのメソッドを提供します。このうち、Marshal 関数は Golang 形式を JSON 形式に変換し、Unmarshal 関数は JSON 形式を Golang 形式に変換します。

まず、構造を JSON 形式に変換する簡単な例を見てみましょう。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    p := Person{"Tom", 24}

    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error: ", err)
    }
    fmt.Println(string(b))
}

出力:

{"name":"Tom","age":24}

上記の例では、Person という名前の構造体を作成し、Marshal 関数を使用してそれを JSON 形式に変換しました。変換処理では、構造体の属性名「Name」は「name」に変換され、「Age」は「age」に変換されます。

同様に、Unmarshal 関数を使用して JSON 形式を Golang 型に変換することもできます。簡単な例を次に示します:

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    jsonString := `{"name":"Tom","age":24}`

    var p Person
    err := json.Unmarshal([]byte(jsonString), &p)
    if err != nil {
        fmt.Println("Error: ", err)
    }
    fmt.Println(p)
}

出力:

{Tom 24}

上記の例では、Unmarshal 関数を使用して JSON 形式の文字列を Golang 型に変換し、その型を変数 p に格納します。 。

JSON 形式の文字列を解析するときは、ターゲット ポインターを渡す必要があります。解析が成功すると、このポインタが指す変数に JSON データが格納されます。

JSON を Golang 型に解析するときは、いくつかの詳細に注意する必要があります。たとえば、JSON のブール値 true と false は、Golang では bool 型として解析されます。数値は、JSON のデータ型と範囲に応じて、float、integer、または int64 型として解析されます。

JSON エンコードとデコードにはサードパーティ ライブラリを使用する

Golang で提供される標準ライブラリはシンプルで使いやすいですが、パフォーマンスは最高ではありません。一部の大規模な JSON データまたは複雑なデータ構造の場合、JSON エンコードおよびデコードに標準ライブラリを使用すると、プログラムのパフォーマンスが低下する可能性があります。したがって、多くのサードパーティ ライブラリが登場し、広く使用されています。

その中で、最も人気のあるライブラリの 1 つは json-iterator/go です。このライブラリは、標準ライブラリよりも高速な JSON エンコードとデコードを提供でき、使い方は非常に簡単です。

json-iterator/go ライブラリを使用した簡単な例を見てみましょう:

package main

import (
    "fmt"

    "github.com/json-iterator/go"
)

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    p := Person{"Tom", 24}

    json := jsoniter.ConfigCompatibleWithStandardLibrary
    b, err := json.Marshal(p)
    if err != nil {
        fmt.Println("Error: ", err)
    }
    fmt.Println(string(b))
}

出力結果は標準ライブラリと同じです:

{"name":"Tom","age":24}

上の例ではでは、json-iterator/go ライブラリで提供される ConfigSupportWithStandardLibrary 変数を使用して、JSON エンコードとデコードが標準ライブラリと一貫していることを確認しました。

概要

この記事では、Golang 言語での JSON エンコードおよびデコード方法について説明します。標準ライブラリを使用して Golang 型を JSON 形式に変換するのは非常に簡単で、ほとんどのニーズを満たすことができます。パフォーマンスの問題が発生した場合、またはより高度な機能が必要な場合は、json-iterator/go などのサードパーティ ライブラリを使用することをお勧めします。どのライブラリを使用する場合でも、JSON のエンコードとデコードの正確性を確保するには、データ型の変換と詳細に注意を払う必要があります。

以上がgolang でデータを json 形式に変換する方法について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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