明示的な構造体を使用しない YAML から JSON への変換
データ構造が動的であるため、YAML を JSON に変換する際の 1 つの課題が発生し、事前定義された構造体にマッピングします。このエラーは、map[interface{}]interface{} 形式のマップを含むインターフェイス タイプをマーシャリングしようとすると発生します。
この問題を回避するには、これらの動的マップを変換する再帰的変換関数が必要です。{}対応する JSON 互換の対応物、map[string]interface{} に変換します。さらに、データ構造内のスライスも走査して変換する必要があります。
再帰変換関数
次の Convert() 関数はこの目的を果たし、検出されたすべてのマップを再帰的に変換します。 [インターフェース{}]インターフェース{}と[]インターフェース{}値:
使用例
この例では、入力 YAML データが最初にインターフェース変数にアンマーシャリングされます:
convert() 関数が body 変数に適用され、すべての動的マップが次のように変換されます。 map[string]interface{}:
最後に、変換された本体が JSON 文字列にマーシャリングされます:
Output
出力 JSON 文字列は、明示的なマッピングがないにもかかわらず、入力 YAML データを正確に表します。 structs:
注
順序付けされていないため、JSON 出力の要素の順序が入力 YAML の順序と異なる場合があることに注意することが重要です。 Go マップの性質。要素の順序を保持することが重要な場合は、構造体のスライスなどの順序付けされたデータ構造の使用を検討してください。
以上がGo で動的データ構造を使用して YAML を JSON に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。