php エディタ Xinyi では、共通インターフェイスを使用して JSON をフィールドにアンマーシャリングする方法を紹介します。開発では、データを簡単に操作および処理できるように、受信した JSON データをフィールドに解析する必要があることがよくあります。汎用インターフェイスは、この目標を達成するためのシンプルかつ柔軟な方法を提供します。共通インターフェイスを使用すると、JSON データを含む文字列をアンマーシャリング メソッドに渡し、後続の処理のために解析されたフィールドを取得できます。この方法はシンプルで使いやすいだけでなく、さまざまなタイプの JSON データ解析にも適しています。共通のインターフェイスを使用して JSON をフィールドにアンマーシャリングする方法を学びましょう。
次の構造を持つ汎用応答オブジェクトがあります:
リーリーdata
このタイプはインターフェイスであり、多くの実装 (pingresponse など) があります。 response
をその基になる型にアンマーシャリングするにはどうすればよいですか?完全な例は次のとおりです。常にエラー error: json: can unmarshal object into go struct field response.data of type main.data
が発生します。
:
type response struct { data data `json:"data"` error string `json:"error,omitempty"` nextpagetoken string `json:"next_page_token,omitempty"` }
どの具象型にアンマーシャリングするかを encoding/json
に指示する必要があります。このパッケージではこれを行うことはできません。
typea
および typeb
が次のように定義されていると仮定します。
リーリー
あなたの例に関しては、次のようにアンマーシャリングする型を
encoding/json に伝えることができます。
リーリー
事前に型がわからない場合は、
: にマーシャリングできます。
リーリー
そして次のようにタイプを決定します:
別の解決策は、型情報を json に埋め込むことです:
リーリー次に、
response.type の値に基づいて response.data
をデコードします。 encoding/json
で提供される例を参照してください: https://pkg.go.dev/encoding/json#example-rawmessage-unmarshal
。
以上が共通インターフェースを使用して JSON をフィールドにアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。