Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahmarshall Nested JSON dengan Kekunci Tidak Diketahui dan Nama Pelayan Dinamik?

Bagaimana untuk Menyahmarshall Nested JSON dengan Kekunci Tidak Diketahui dan Nama Pelayan Dinamik?

Barbara Streisand
Barbara Streisandasal
2024-11-22 07:03:11380semak imbas

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

Menyahmarshalling Nested JSON dengan Unknown Keys

Cabarannya terletak pada menghuraikan struktur JSON dengan nombor kunci luar yang tidak diketahui dan bersarang berstruktur yang mengelirukan kunci. Pertimbangkan format JSON berikut:

{
  "message": {
    "Server1.example.com": [],
    "Server2.example.com": []
  },
  "response_ms": 659,
  "success": true
}

Komplikasi Definisi Struktur

Kerumitan berpunca daripada ketiadaan kunci yang jelas di luar nama pelayan dan sifat dinamik kunci luar. Percubaan awal menggunakan struct bersarang dalam:

type ServerDetails struct {
  Message struct {
    Hostname struct {
      Details struct {
        Application string `json:"application"`
      } `json:"-"`
    } `json:"-"`
  } `json:"message"`
}

gagal disebabkan nama pelayan yang tidak diketahui dan kunci bersarang tunggal tanpa kunci luar.

Penyelesaian Kunci Dinamik

Untuk mengatasi cabaran ini, seseorang boleh menggunakan peta[rentetan]ServerStruct dalam peringkat teratas struct. ServerStruct mengandungi aplikasi, pemilik dan maklumat lain yang berkaitan khusus untuk setiap pelayan. Teg JSON boleh ditambah secara strategik untuk memastikan penghuraian yang betul.

Definisi Struktur yang Disemak

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

type ServerStruct struct {
    Application string
    Owner string
    [...]
}

Teg JSON dan Unmarshalling

Tag JSON tambahan ialah perlu:

{
  "message": {
    "Server1.example.com": [
      {
        "application": "Apache",
        "host": {
          "name": "/^Server-[13456]/"
        },
        "owner": "User1",
        "project": "Web",
        "subowner": "User2"
      }
    ],

Medan "mesej" kini menyahmarshal ke dalam peta[rentetan][]ServerStruct. Setiap kunci dalam peta mewakili nama pelayan, dan nilai yang sepadan ialah tatasusunan ServerStruct. Medan "hos" diabaikan semasa unmarshalling menggunakan teg "-".

Dengan pengubahsuaian ini, data JSON boleh berjaya dihuraikan ke dalam struct yang disemak semula.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshall Nested JSON dengan Kekunci Tidak Diketahui dan Nama Pelayan Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn