サイズが不明な配列を含む JSON のアンマーシャリング
JSON 経由でデータを取得する場合、返された JSON には、配列。たとえば、スマート メーターのリストを要求すると、「gwrcmd」の下の単一の要素として受信される可能性があります。ただし、電力使用量をリクエストすると、「gwrcmds」の配列として返される可能性があります。
Go の構造体では配列と単一要素の明示的な定義が必要なため、この曖昧さによりマーシャリングの課題が生じます。これに対処するには、json.Unmarshal を使用して、JSON 構造に基づいて単一の struct { } または配列 []struct { } を返すことができます。
ただし、予期した内容が含まれない場合、json.Unmarshal でエラーが発生する可能性があります。型が JSON 構造と競合します。この問題を解決するには、「Gwrcmd」のスライスの使用を除き、最初の構造体を複製する 2 番目の構造体を作成できます。あるいは、より堅牢なアプローチには、json.RawMessage を使用して不明な型の JSON 値をキャプチャし、その内容に基づいてさらにアンマーシャリングを実行することが含まれます。これにより、最初のバイトのみに基づいて配列の型を決定する推測作業が回避されます。
両方のアプローチの例が、提供されている Go コード スニペットで示されています。さらに、さらに詳しく調べるために、関連リソースがリストされています。
以上がGo で不明なサイズの JSON 配列をアンマーシャルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。