golangのjson型変換
Golang では、JSON はデータの送信と保存を容易にするため、重要なデータ形式です。 JSON データを処理するときに型変換は非常に一般的な操作です。この記事では、Golang での JSON 型変換について説明します。
JSON データ型
JSON 型変換を実行する前に、JSON のデータ型を理解する必要があります。 JSON のデータ型は Golang のデータ型と完全に対応しているわけではありません。JSON には次の 6 つのデータ型があります:
- Object (オブジェクト): 中括弧 {} で囲まれ、コレクションを表します。キーと値のペア。値のペアを区切るにはカンマを使用します。
- Array (配列): 角括弧 [] で囲まれ、カンマで区切られた順序付きの値のリストを表します。
- String (文字列): 二重引用符 " で囲まれ、文字列値を表します。
- Number (数値): 整数または浮動小数点数の数値を表します。 .
- Boolean: true または false のブール値を表します。
- Null: 空のオブジェクトまたは空の値を表します。
Golang では、次のように使用できます。タイプ JSON データ型を表す場合:
- オブジェクト: map[string]interface{}
- Array: []interface{}
- String: string
- 値: float64
- ブール値: bool
- Null 値: nil
JSON の解析とエンコード
JSON 型変換の前に、まずJSON の解析とエンコードを理解する必要があります。
JSON 解析
encoding/json
パッケージの Decode
メソッドを使用して文字列を変換できます。または、バイト配列が JSON オブジェクトに解析されます。例:
import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Address string } func main() { jsonStr := `{"Name": "Tom", "Age": 18, "Address": "Beijing"}` var p Person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { fmt.Println(err) return } fmt.Println(p.Name, p.Age, p.Address) }
上記のコードでは、Unmarshal
メソッドは JSON 文字列を Person
オブジェクトに解析します。もちろん、必要なだけであれば、map[string]interface{}
や []interface{}
などの基本的なデータ型に解析することも可能です。 #JSON エンコーディング
pass
encoding/json パッケージの Encode
メソッドは、JSON オブジェクトを文字列またはバイト配列にエンコードできます。例: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
Address string
}
func main() {
p := Person{Name: "Tom", Age: 18, Address: "Beijing"}
jsonString, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(jsonString))
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
上記のコードでは、
メソッドは、Person
オブジェクトを JSON 文字列にエンコードします。もちろん、map[string]interface{ のみをエンコードしたい場合は、 }
または []interface{ }
やその他の基本的なデータ型も可能です。JSON 型変換
JSON データを解析した後、 JSON オブジェクトを Golang の基本データ型 (
int、string
、bool
など) に変換します。また、JSON 配列を Golang の配列に変換することもできます。 JSON オブジェクトを Golang の構造体に変換します。JSON 数値を int および float64 に変換
float64()
およびint()。例:
import ( "encoding/json" "fmt" ) func main() { jsonStr := `{"float": 1.23, "int": 456}` var data map[string]interface{} err := json.Unmarshal([]byte(jsonStr), &data) if err != nil { fmt.Println(err) return } floatValue := data["float"].(float64) intValue := int(data["int"].(float64)) fmt.Println(floatValue, intValue) }
上記のコードでは、まず JSON 文字列を
map[string]interface{} 型の data オブジェクトに解析し、次に #アサーションを通じて ##data
オブジェクトの float
は float64
型の floatValue
に変換され、int
は ## に変換されます。 #int
intValue と入力します。
JSON 文字列を string に変換する
JSON の文字列を Golang の
string
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `{"name": "Tom"}`
var data map[string]interface{}
err := json.Unmarshal([]byte(jsonStr), &data)
if err != nil {
fmt.Println(err)
return
}
name := data["name"].(string)
fmt.Println(name)
}
ログイン後にコピー
上記のコードでは、JSON 文字列を import ( "encoding/json" "fmt" ) func main() { jsonStr := `{"name": "Tom"}` var data map[string]interface{} err := json.Unmarshal([]byte(jsonStr), &data) if err != nil { fmt.Println(err) return } name := data["name"].(string) fmt.Println(name) }
map[string]interface{} タイプの
data
data オブジェクトの
name は、アサーションを通じて
string 型の
name に変換されます。
JSON 配列を []interface{}に変換する
Golang で JSON の配列を
[]interface{}
import (
"encoding/json"
"fmt"
)
func main() {
jsonStr := `["Tom", 18, 1.23]`
var data []interface{}
err := json.Unmarshal([]byte(jsonStr), &data)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(data)
}
ログイン後にコピー
上記のコードでは、JSON 文字列を import ( "encoding/json" "fmt" ) func main() { jsonStr := `["Tom", 18, 1.23]` var data []interface{} err := json.Unmarshal([]byte(jsonStr), &data) if err != nil { fmt.Println(err) return } fmt.Println(data) }
[]interface{} 型の
data
配列の各要素が正しく解析されます。 JSON オブジェクトを map[string]interface に変換する{}
JSON のオブジェクトを
map[string]interface に変換する{}
型も非常に単純で、渡すだけです。直接的な主張。例:
import ( "encoding/json" "fmt" ) func main() { jsonStr := `{"name": "Tom", "age": 18}` var data map[string]interface{} err := json.Unmarshal([]byte(jsonStr), &data) if err != nil { fmt.Println(err) return } fmt.Println(data) }
上記のコードでは、JSON 文字列を
map[string]interface{} 型の data
オブジェクトに解析します。 ##data
name と
age が含まれています。
JSON オブジェクトを構造体に変換する
JSON のオブジェクトを Golang の構造体に変換するには、構造体のフィールドを指定し、アサーションを通じて構造体のフィールド値を割り当てる必要があります。例:
import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Address string } func main() { jsonStr := `{"Name": "Tom", "Age": 18, "Address": "Beijing"}` var data map[string]interface{} err := json.Unmarshal([]byte(jsonStr), &data) if err != nil { fmt.Println(err) return } p := Person{ Name: data["Name"].(string), Age: int(data["Age"].(float64)), Address: data["Address"].(string), } fmt.Println(p) }
上記のコードでは、JSON 文字列を
map[string]interface{} 型の data
オブジェクトに解析し、その後 ##アサーション #dataを通じて、オブジェクト内のキーと値のペアは、構造体
Person のフィールドに割り当てられます。 <h2 id="概要">概要</h2>
<p>Golang での JSON 型変換は非常に一般的なため、JSON データを処理する際にはそれを完全に理解しておく必要があります。この記事では、Golang での JSON データ型、JSON 解析およびエンコード方法、JSON 型変換などを紹介することで、読者が Golang をより適切に適用して JSON データを処理できるようにしたいと考えています。 </p>
以上がgolangのjson型変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

この記事では、Debianシステムの下でPostgreSQLデータベースを監視するためのさまざまな方法とツールを紹介し、データベースのパフォーマンス監視を完全に把握するのに役立ちます。 1. PostgreSQLを使用して監視を監視するビューPostgreSQL自体は、データベースアクティビティを監視するための複数のビューを提供します。 PG_STAT_REPLICATION:特にストリームレプリケーションクラスターに適した複製ステータスを監視します。 PG_STAT_DATABASE:データベースサイズ、トランザクションコミット/ロールバック時間、その他のキーインジケーターなどのデータベース統計を提供します。 2。ログ分析ツールPGBADGを使用します
