不明なキーと動的サーバー名を含むネストされた JSON をアンマーシャリングする方法

Barbara Streisand
リリース: 2024-11-22 07:03:11
オリジナル
330 人が閲覧しました

How to Unmarshall Nested JSON with Unknown Keys and Dynamic Server Names?

不明なキーを使用したネストされた JSON のアンマーシャリング

課題は、未知の数の外部キーと混乱を招く構造のネストされた JSON 構造を解析することにあります。鍵。次の JSON 形式について考えてみましょう。

{
  "message": {
    "Server1.example.com": [],
    "Server2.example.com": []
  },
  "response_ms": 659,
  "success": true
}
ログイン後にコピー

構造体定義の複雑さ

この複雑さは、サーバー名の外部にクリア キーがないことと、サーバー名の動的な性質に起因します。外側のキー。深くネストされた構造体:

type ServerDetails struct {
  Message struct {
    Hostname struct {
      Details struct {
        Application string `json:"application"`
      } `json:"-"`
    } `json:"-"`
  } `json:"message"`
}
ログイン後にコピー

を使用した最初の試行は、不明なサーバー名と、外部キーのない単一のネストされたキーが原因で失敗します。

ダイナミック キー ソリューション

これらの課題を克服するには、トップレベルの構造体内で map[string]ServerStruct を利用できます。 ServerStruct には、アプリケーション、所有者、および各サーバーに固有のその他の関連情報が含まれています。 JSON タグを戦略的に追加して、適切な解析を確保できます。

改訂された構造定義

type YourStruct struct {
    Success bool
    ResponseMS int
    Servers map[string]*ServerStruct
}

type ServerStruct struct {
    Application string
    Owner string
    [...]
}
ログイン後にコピー

JSON タグとアンマーシャリング

追加の JSON タグは必要:

{
  "message": {
    "Server1.example.com": [
      {
        "application": "Apache",
        "host": {
          "name": "/^Server-[13456]/"
        },
        "owner": "User1",
        "project": "Web",
        "subowner": "User2"
      }
    ],
ログイン後にコピー

「message」フィールドが、map[string][]ServerStruct にアンマーシャリングされるようになりました。マップ内の各キーはサーバー名を表し、対応する値は ServerStruct の配列です。 「host」フィールドは、「-」タグを使用したアンマーシャリング中に無視されます。

これらの変更により、JSON データは修正された構造体に正常に解析されます。

以上が不明なキーと動的サーバー名を含むネストされた JSON をアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート