Maison > développement back-end > Golang > Comment analyser des données JSON imbriquées avec des clés inconnues et des structures de champs non conventionnelles ?

Comment analyser des données JSON imbriquées avec des clés inconnues et des structures de champs non conventionnelles ?

Linda Hamilton
Libérer: 2024-11-16 21:22:03
original
615 Les gens l'ont consulté

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

Résoudre l'énigme du JSON imbriqué avec des clés inconnues

Démêler des données JSON complexes avec des clés inconnues peut être une tâche ardue. Considérez la structure JSON déroutante fournie :

{
  "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
}
Copier après la connexion

La structure prête à confusion, mais nous pouvons la décortiquer étape par étape. Dans un premier temps, on note la présence de noms de serveurs inconnus, tels que « Serveur1.exemple.com » et « Serveur2.exemple.com », qui varient dynamiquement. De plus, le champ "hôte" contient une expression regex cryptique sans clé englobante.

Pour résoudre ce défi, concentrons-nous sur la structure fournie :

type ServerDetails struct {
  Message  struct{
    Hostname struct{
      Details struct{
        Application string `json:"application"`
        }`json:"-"`
       }`json:"-"`
     }`json:"message"`
}
Copier après la connexion

Cette structure est conçue pour gérer les champs connus dans l'objet "message", mais il ne parvient pas à capturer les différents noms de serveur et le champ "hôte" particulier.

Une idée clé consiste à utiliser une structure de données plus flexible, à savoir une carte [chaîne]ServerStruct. Cela nous permet de prendre en compte les noms de serveurs inconnus comme des clés pointant vers une valeur ServerStruct.

La structure révisée ressemblerait à :

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

type ServerStruct struct {
    Application string
    Owner string
    [...]
}
Copier après la connexion

Avec l'ajout de balises JSON appropriées, nous pouvons analysez maintenant avec succès les données JSON dans cette structure améliorée.

En nous adaptant à la nature dynamique des données JSON à l'aide d'un map[string]ServerStruct et en adoptant les possibilités de champs sans clé avec des balises JSON, nous pouvons efficacement démêler le structure perplexe des données JSON imbriquées et extraire les informations souhaitées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal