Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghuraikan Data JSON Bersarang dengan Kekunci Tidak Diketahui dan Struktur Medan Tidak Konvensional?

Bagaimana untuk Menghuraikan Data JSON Bersarang dengan Kekunci Tidak Diketahui dan Struktur Medan Tidak Konvensional?

Linda Hamilton
Linda Hamiltonasal
2024-11-16 21:22:03625semak imbas

How to Parse Nested JSON Data with Unknown Keys and Unconventional Field Structures?

Merungkai Enigma JSON Bersarang dengan Kekunci Tidak Diketahui

Menghapuskan data JSON yang kompleks dengan kunci yang tidak diketahui boleh menjadi tugas yang sukar. Pertimbangkan struktur JSON yang membingungkan yang disediakan:

{
  "message": {
    "Server1.example.com": [
      {
        "application": "Apache",
        "host": {
          "name": "/^Server-[13456]/"
        },
        "owner": "User1",
        "project": "Web",
        "subowner": "User2"
      }
    ],
    "Server2.example.com": [
      {
        "application": "Mysql",
        "host": {
          "name": "/^Server[23456]/"
        },
        "owner": "User2",
        "project": "DB",
        "subowner": "User3"
      }
    ]
  },
  "response_ms": 659,
  "success": true
}

Strukturnya mengelirukan, tetapi kita boleh membedahnya langkah demi langkah. Pada mulanya, kami perhatikan kehadiran nama pelayan yang tidak diketahui, seperti "Server1.example.com" dan "Server2.example.com," yang berbeza-beza secara dinamik. Selain itu, medan "hos" mengandungi ungkapan regex samar tanpa kunci yang disertakan.

Untuk merungkai cabaran ini, mari kita alihkan fokus kita kepada struct yang disediakan:

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

Struktur ini direka bentuk untuk mengendalikan medan yang diketahui dalam objek "mesej", tetapi ia gagal menangkap nama pelayan yang berbeza-beza dan "hos" yang pelik medan.

Pandangan utama ialah menggunakan struktur data yang lebih fleksibel, iaitu peta[rentetan]ServerStruct. Ini membolehkan kami mengambil kira nama pelayan yang tidak diketahui sebagai kunci yang menghala ke nilai ServerStruct.

Struktur yang disemak akan menyerupai:

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

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

Dengan penambahan tag JSON yang sesuai, kita boleh kini berjaya menghuraikan data JSON ke dalam struct dipertingkat ini.

Dengan menyesuaikan diri dengan sifat dinamik data JSON menggunakan peta[rentetan]ServerStruct dan menerima kemungkinan medan yang tidak dikunci dengan teg JSON, kami boleh merungkai struktur data JSON bersarang yang membingungkan dengan berkesan dan mengekstrak maklumat yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Data JSON Bersarang dengan Kekunci Tidak Diketahui dan Struktur Medan Tidak Konvensional?. 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