「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > マルチタイプのデータ方法を解析する配列に移動します

マルチタイプのデータ方法を解析する配列に移動します

2025-04-17に投稿されました
ブラウズ:730

How to Unmarshal a Go Array with Disparate Data Types?

go

の異なるタイプの配列を除去することは、キー値のペアを処理する場合、非群れは簡単です。ただし、明確な順序で混合型の配列を監視することは、課題を提示します。この問題を解決するには、さまざまなデータ型に柔軟な方法で対応できるソリューションが必要です。インターフェイス{}タイプのタイプをタイプアサーションと組み合わせて活用することにより、それに応じて各配列要素の根本的なタイプとmarshalを動的に分析できます。 輸入 ( 「エンコード/json」 「FMT」 )) func decodejson(f interface {}){ switch vf:= f。(type){ ケースマップ[文字列]インターフェイス{}: fmt.println( "is a map:") k、v:= range vf { checktypeanddecode(k、v) } case [] interface {}: fmt.println( "は配列です:") k、v:= range vf { checktypeanddecode(k、v) } } } func checktypeanddecode(k string、v interface {}){ switch vv:= v。(type){ ケース文字列: fmt.printf( "%v:is string -%q \ n"、k、vv) ケースINT: fmt.printf( "%v:is int -%q \ n"、k、vv) デフォルト: fmt.printf( "%v:"、k) DecodeJson(V) } } func main(){ my_json:= `{ 「an_array」:[ 「with_a string」、 { "and": "some_more"、 「違う」:[「ネストされた」、「タイプ」] } ] } ` var f interface {} err:= json.unmarshal([] byte(my_json)、&f) err!= nil { fmt.println(err) } それ以外 { fmt.println( "json:") DecodeJson(f) } }

この変更されたコードは、deCodeJSON関数を使用してJSON構造を再帰的に分析し、各要素のデータ型を識別し、適切な表現を印刷します。複雑なネストされた構造の場合、decodejsonへのネストされた呼び出しが実行されます。 地図です: AN_ARRAY:アレイです: 0:文字列 - 「with_a string」です 1:マップです: と:文字列 - 「Some_more」 違う:アレイです: 0:文字列 - 「ネスト」 1:文字列 - 「タイプ」

がGOでのタイプの処理のこの強化された理解により、データ型の不均一な組み合わせを含む自信を持って除外して、アプリケーションで正確で一貫したデータ表現を確保できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3