ホームページ > バックエンド開発 > Golang > golang で json を変更する

golang で json を変更する

PHPz
リリース: 2023-05-21 14:31:12
オリジナル
677 人が閲覧しました

Go 言語 (Golang) は C 言語に似たプログラミング言語で、主に効率的で信頼性の高いプログラミング アプリケーションの開発に使用されます。他のプログラミング言語と比較した場合、Golang の利点には、高いパフォーマンス、高い開発効率、高い同時実行性、および強力なエラー処理機能が含まれます。実際の開発ではJSON形式のデータを操作する必要が生じることが多いですが、この記事ではGolangを使ってJSON形式のデータを改変する方法を紹介します。

1. JSON の概要

JSON は JavaScript Object Notation の略で、軽量のデータ交換形式です。これは、JavaScript 言語標準 (ECMA-262 バージョン 3、1999 年 12 月) のサブセットに基づいています。 JSON 形式の仕様と読みやすさにより、Web アプリケーションで広く使用されています。

2. Golang での JSON の使用

Golang では、encoding/json パッケージを使用して JSON 形式を処理できます。このパッケージは、JSON の解析と生成操作を実装できる Marshal、Unmarshal、NewEncoder、NewDecoder などの関数を提供します。

  1. JSON の解析

JSON の解析では、通常、 json.Unmarshal() 関数を使用します。次の JSON 文字列があるとします。

{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}
ログイン後にコピー
ログイン後にコピー

JSON データを表す次の構造を定義できます。

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}
ログイン後にコピー
ログイン後にコピー

Unmarshal() 関数を使用して、JSON 文字列を Student 構造に解析します。

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var std Student
err := json.Unmarshal([]byte(str), &std)
if err != nil {
    panic(err.Error())
}
fmt.Println(std.Name, std.Age, std.Gender, std.Score)
ログイン後にコピー

実行後の出力:

Tom 18 male [88 90 95]
ログイン後にコピー
  1. JSON の生成

通常、JSON の生成には json.Marshal() 関数が使用されます。 Student:

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}
ログイン後にコピー
ログイン後にコピー

という構造を定義し、その構造を JSON 文字列に変換します:

std := Student{
    Name:   "Tom",
    Age:    18,
    Gender: "male",
    Score:  []int{88, 90, 95},
}
result, err := json.Marshal(std)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
ログイン後にコピー

出力:

{"name":"Tom","age":18,"gender":"male","score":[88,90,95]}
ログイン後にコピー

3. JSON

In を変更します。 Golang では、いくつかの簡単な方法を使用して JSON 形式のデータを変更できます。次の JSON データがあるとします。

{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}
ログイン後にコピー
ログイン後にコピー

まず、Unmarshal() 関数を使用して、JSON 文字列を Map 形式に解析します。

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var data map[string]interface{}
err := json.Unmarshal([]byte(str), &data)
if err != nil {
    panic(err.Error())
}
ログイン後にコピー

次に、データ内の値を変更します。

data["score"] = []int{99, 98, 97}
ログイン後にコピー

最後に、Marshal() 関数を使用してマップを JSON 文字列に変換します。

result, err := json.Marshal(data)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
ログイン後にコピー

出力:

{"age":18,"gender":"male","name":"Tom","score":[99,98,97]}
ログイン後にコピー

構造体を使用して JSON を変更することもできます。

type Student struct {
    Name   string  `json:"name"`
    Age    int     `json:"age"`
    Gender string  `json:"gender"`
    Score  []int   `json:"score"`
}

var str = `{
    "name": "Tom",
    "age": 18,
    "gender": "male",
    "score": [88, 90, 95]
}`
var std Student
err := json.Unmarshal([]byte(str), &std)
if err != nil {
    panic(err.Error())
}

std.Score = []int{99, 98, 97}

result, err := json.Marshal(std)
if err != nil {
    panic(err.Error())
}
fmt.Println(string(result))
ログイン後にコピー

出力:

{"name":"Tom","age":18,"gender":"male","score":[99,98,97]}
ログイン後にコピー

4. まとめ

この記事では主に、JSON の解析、JSON の生成、JSON の変更など、Golang で JSON 形式を処理する方法を紹介します。 JSON データ形式は軽量で読みやすいデータ交換形式であり、Golang はエンコーディング/json パッケージを通じて強力なサポートを提供します。実際の開発では、プログラムの効率と保守性を向上させるために、必要に応じて異なる操作方法を選択する必要があります。

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

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