ホームページ バックエンド開発 Golang json、xml、protobuf の Golang 関数のエンコードおよびデコード方法

json、xml、protobuf の Golang 関数のエンコードおよびデコード方法

May 18, 2023 am 08:00 AM
golang (ゴー言語) エンコード/デコード json/xml/protobuf

Golang は、ネットワーク アプリケーションの開発で広く使用されているオープン ソース プログラミング言語です。 Golang では、豊富な関数ライブラリを提供するだけでなく、json、xml、protobuf などのさまざまなエンコードおよびデコード方法も提供します。この記事では、Golang関数のjson、xml、protobufのエンコード・デコード方法とその使い方を紹介します。

1. json のエンコードとデコード

1.1 エンコード

Golang では、構造を json 形式にエンコードするのは非常に簡単です。 json パッケージの Marshal 関数を使用して、構造を json データにエンコードするだけです。

たとえば、次のような構造があります:

type Student struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address string `json:"address"`
}
ログイン後にコピー

この構造を json 形式にエンコードしたい場合は、次のように実行できます:

s := Student{
    Name:    "张三",
    Age:     18,
    Address: "北京市朝阳区",
}
b, err := json.Marshal(s)
if err != nil {
    //错误处理
}
fmt.Println(string(b))
ログイン後にコピー

出力 json 形式:

{
    "name": "张三",
    "age": 18,
    "address": "北京市朝阳区"
}
ログイン後にコピー

1.2 デコード

同様に、json パッケージの Unmarshal 関数を使用して、json データを構造体にデコードすることも非常に簡単です。 json データを Unmarshal 関数に渡すだけです。

たとえば、次の json データがあります:

data := `{
    "name": "李四",
    "age": 20,
    "address": "上海市浦东新区"
}`
ログイン後にコピー

この json データを構造体にデコードしたい場合は、次のように実行できます:

var s Student
err := json.Unmarshal([]byte(data), &s)
if err != nil {
    //错误处理
}
fmt.Println(s.Name, s.Age, s.Address)
ログイン後にコピー

出力結果は:

李四 20 上海市浦东新区
ログイン後にコピー
ログイン後にコピー

2. XML エンコードとデコード

2.1 エンコード

Golang では、構造を XML 形式にエンコードすることもできます。エンコーディング/xml パッケージの Marshal 関数を使用するだけです。

たとえば、次のような構造があります:

type Student struct {
    Name    string `xml:"name"`
    Age     int    `xml:"age"`
    Address string `xml:"address"`
}
ログイン後にコピー

この構造を XML 形式にエンコードしたい場合は、次のように実行できます:

s := Student{
    Name:    "张三",
    Age:     18,
    Address: "北京市朝阳区",
}
b, err := xml.Marshal(s)
if err != nil {
    //错误处理
}
fmt.Println(string(b))
ログイン後にコピー

Output xml format As

<Student>
    <name>张三</name>
    <age>18</age>
    <address>北京市朝阳区</address>
</Student>
ログイン後にコピー

2.2 デコード

同様に、encoding/xml パッケージの Unmarshal 関数を使用して XML データを構造体にデコードすることも非常に簡単です。 XML データを Unmarshal 関数に渡すだけです。

たとえば、次の XML データがあります:

data := `
<Student>
    <name>李四</name>
    <age>20</age>
    <address>上海市浦东新区</address>
</Student>`
ログイン後にコピー

この XML データを構造体にデコードしたい場合は、次のように実行できます:

var s Student
err := xml.Unmarshal([]byte(data), &s)
if err != nil {
    //错误处理
}
fmt.Println(s.Name, s.Age, s.Address)
ログイン後にコピー

出力結果

李四 20 上海市浦东新区
ログイン後にコピー
ログイン後にコピー

3. protobuf のエンコードとデコード

3.1 protobuf のインストール

protobuf のエンコードとデコードの前に、最初に protobuf をインストールする必要があります。インストール方法は次のとおりです。

  1. protobuf インストール ファイルをダウンロードします。ダウンロード アドレス: https://github.com/protocolbuffers/protobuf/releases
  2. インストール ファイルを解凍し、解凍されたディレクトリに移動します。
  3. 次のコマンドを実行して protobuf をインストールします:
./configure
make
make check
sudo make install
sudo ldconfig
ログイン後にコピー
  1. protobuf が正常にインストールされているかどうかを確認します:
protoc --version
ログイン後にコピー

次のような情報がある場合が出力されます。protobuf が正常にインストールされたことを示してください:

libprotoc 3.6.1
ログイン後にコピー

3.2 protobuf ファイルの書き込み

protobuf のエンコードとデコードの前に、protobuf ファイルを作成する必要があります。 protobuf ファイルでは、メッセージ タイプを定義し、各フィールドにタグを割り当てる必要があります。

たとえば、protobuf ファイルは次のように記述します。

syntax = "proto3";
package main;

message Student {
    string name = 1;
    int32 age    = 2;
    string address = 3;
}
ログイン後にコピー

protobuf では、tag は各フィールドを識別するために使用される整数値です。この例では、名前フィールドは 1 に設定され、年齢フィールドは 2 に設定され、住所フィールドは 3 に設定されます。

3.3 コーディング

Golang では、protobuf を使用したコーディングは非常に簡単です。 protobuf パッケージの Marshal 関数を使用するだけです。

たとえば、次のような構造があります:

s := &pb.Student{
    Name:    "张三",
    Age:     18,
    Address: "北京市朝阳区",
}
b, err := proto.Marshal(s)
if err != nil {
    //错误处理
}
fmt.Println(string(b))
ログイン後にコピー

出力 protobuf エンコーディングは次のとおりです:

1:6
2:18
3:"北京市朝阳区"
ログイン後にコピー

3.4 デコード

同様に、 protobuf パッケージ protobuf データを構造体にデコードする Unmarshal 関数も非常に簡単です。 protobuf データとメッセージ タイプを Unmarshal 関数に渡すだけです。

たとえば、次の protobuf データがあります:

data := []byte{0x0a, 0x06, 0xe5, 0xbc, 0xa0, 0xe4, 0xb8, 0x89, 0x10, 0x12, 0x0f, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d, 0xe5, 0x8c, 0x97, 0xe5, 0x8c, 0x80, 0x1a, 0x0d, 0xe5, 0x8c, 0x97, 0xe4, 0xba, 0xac, 0xe5, 0x9b, 0xbd, 0xe5, 0x8c, 0x9d}
ログイン後にコピー

この protobuf データを構造体にデコードしたい場合は、次のように実行できます:

var s pb.Student
err := proto.Unmarshal(data, &s)
if err != nil {
    //错误处理
}
fmt.Println(s.Name, s.Age, s.Address)
ログイン後にコピー

出力結果

张三 18 北京市朝阳区
ログイン後にコピー

概要

Golang では、さまざまなシナリオのニーズを満たすために、さまざまなエンコードおよびデコード方法が提供されています。 json のエンコードとデコード、xml のエンコードとデコード、protobuf のエンコードとデコードは、一般的に使用されるエンコードとデコードの方法であり、幅広い適用性があります。これらのコーデックをマスターすると、ネットワーク アプリケーションの開発がより簡単になります。

以上がjson、xml、protobuf の Golang 関数のエンコードおよびデコード方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang と FFmpeg: ライブ ストリーミングの技術的実装 Golang と FFmpeg: ライブ ストリーミングの技術的実装 Sep 27, 2023 pm 12:28 PM

Golang と FFmpeg: ライブ ストリーミングの技術的な実装には、特定のコード サンプルが必要です はじめに: 近年、ライブ ブロードキャスト技術の急速な発展と普及により、ライブ ブロードキャストはメディア手法としてますます人気が高まっています。中でもライブ配信を実現する鍵となるのがリアルタイムストリーミング技術です。この記事では、プログラミング言語 Golang とマルチメディア処理ツール FFmpeg を使用してライブ ストリーミングの技術的実装を実現する方法を紹介し、関連するコード例をいくつか示します。 1. Golang と FFmpeg テクノロジの概要 1.1

Golang のパフォーマンス テスト方法とツール Golang のパフォーマンス テスト方法とツール Aug 10, 2023 am 09:24 AM

Golang のパフォーマンス テスト方法とツールの紹介: ソフトウェア開発において、パフォーマンス テストは重要なリンクです。パフォーマンス テストにより、開発者はプログラムのパフォーマンスを検証し、潜在的なパフォーマンスのボトルネックを特定できます。高性能プログラミング言語として、Golang は開発者がパフォーマンス テストを行うのに役立ついくつかの方法とツールも提供します。この記事では、Golang で一般的に使用されるいくつかのパフォーマンス テスト方法とツールをコード例とともに紹介します。 1. ベンチマーク テスト Golang は、簡単に実行できる組み込みのベンチマーク テスト フレームワークを提供します。

Golang と FFmpeg: オーディオのデコードとエンコードを実装する方法 Golang と FFmpeg: オーディオのデコードとエンコードを実装する方法 Sep 27, 2023 am 10:49 AM

Golang と FFmpeg: オーディオのデコードとエンコードを実装する方法、具体的なコード例が必要です はじめに: マルチメディア テクノロジの継続的な発展に伴い、オーディオ処理は多くのアプリケーションにとって不可欠な部分になりました。この記事では、Golang ライブラリと FFmpeg ライブラリを使用してオーディオのデコードおよびエンコード機能を実装する方法を紹介し、具体的なコード例を示します。 1.FFmpegとは何ですか? FFmpeg は、オーディオとビデオをデコード、エンコード、変換、ストリーミングできる強力なオープンソース マルチメディア処理ツールです。

Golang 画像処理: 画像にガウスぼかし効果を実現する方法を学びます Golang 画像処理: 画像にガウスぼかし効果を実現する方法を学びます Aug 17, 2023 pm 12:06 PM

Golang 画像処理: 画像のガウスぼかし効果を実現する方法を学びます。 はじめに: 画像処理は、コンピューター ビジョンの分野で重要な役割を果たします。画像処理では、ガウスぼかしは、画像をぼかし、画像内のノイズとディテールを低減するために一般的に使用される手法です。この記事では、Golang を使用して画像のガウスぼかし効果を実現する方法をコード例とともに学びます。環境の準備: まず、Golang 開発環境が正しくインストールされていることを確認します。ターミナルまたはコマンドプロンプトで

Golang と FFmpeg: オンライン ライブ ストリーミング メディア用のプッシュ テクノロジ Golang と FFmpeg: オンライン ライブ ストリーミング メディア用のプッシュ テクノロジ Sep 29, 2023 pm 02:22 PM

Golang と FFmpeg: オンライン ライブ ストリーミング メディアのプッシュ テクノロジを実装するには、特定のコード サンプルが必要です 要約: オンライン ライブ ブロードキャストの人気に伴い、ますます多くの開発者がストリーミング メディアのプッシュ テクノロジの実装方法に注目し始めています。この記事では、Golang と FFmpeg を使用してオンライン ライブ ストリーミング メディアのプッシュを実現する方法を紹介します。具体的なコード例を通じて、読者は Golang と FFmpeg に基づいたプッシュ システムを構築する方法を段階的に理解できます。 1. Golang 言語 Golang の紹介

Golang を使用して画像を段階的に読み込み、圧縮する方法 Golang を使用して画像を段階的に読み込み、圧縮する方法 Aug 18, 2023 pm 12:46 PM

Golang を使用して画像をプログレッシブに読み込み、圧縮する方法 1. はじめに 現在、インターネット上で画像を使用することが非常に一般的になりました。しかし、大きな画像の読み込みが遅い、段階的に表示できないなどの問題も頻繁に発生し、ユーザーエクスペリエンスに影響を与えます。この記事では、Golang を使用して画像を段階的に読み込んで圧縮し、ユーザーの読み込み速度とエクスペリエンスを向上させる方法を紹介します。 2. プログレッシブ読み込み いわゆるプログレッシブ読み込みとは、画像が完全に読み込まれる前に、その品質のごく一部を徐々に表示できることを意味します。存在する

Golang とテンプレート パッケージ: スムーズな Web エクスペリエンスを作成します Golang とテンプレート パッケージ: スムーズな Web エクスペリエンスを作成します Jul 17, 2023 am 10:57 AM

Golang とテンプレート パッケージ: スムーズな Web エクスペリエンスを作成する 今日のインターネット時代では、Web ページのユーザー エクスペリエンスは Web サイトの成功にとって非常に重要です。 Web テクノロジーが開発と革新を続ける中、開発者は効率的で簡潔なツールを使用してスムーズなユーザー インターフェイスを構築する必要があります。 Golang 開発の分野では、Template パッケージは、開発者が高速で保守しやすい Web ページ テンプレートを実装するのに役立つ強力なツールです。 Template パッケージは、Golang 標準ライブラリに付属するテンプレート エンジンです。

Golang でのテーブル駆動テストの実践 Golang でのテーブル駆動テストの実践 Aug 09, 2023 pm 06:09 PM

Golang でのテーブル駆動テストの実践の紹介: ソフトウェア開発プロセスにおいて、テストは非常に重要なリンクであり、開発者がプロ​​グラム内の問題を見つけて修正し、ソフトウェアの品質と信頼性を向上させるのに役立ちます。テーブル駆動テストは、より効率的にテストし、より優れたコード カバレッジを提供できる一般的に使用されるテスト方法です。テーブル駆動テストとは何ですか?テーブル駆動テストとは、テストデータと期待される結果をテーブルに格納し、テーブル内のデータに基づいて複数のテストケースを一度に実行するテスト手法です。

See all articles