Maison > Java > le corps du texte

Définir des POJO avec des clés mutables

王林
Libérer: 2024-02-09 08:42:09
avant
484 Les gens l'ont consulté

L'éditeur PHP Zimo vous expliquera comment utiliser les clés variables pour définir des POJO (anciens objets Java) dans cet article. En programmation, POJO fait référence à un simple objet Java qui ne dépend d'aucun framework ou bibliothèque spécifique. Les clés variables signifient que lors de la définition d'un POJO, les clés (noms de propriété) peuvent être modifiées ou étendues dynamiquement selon les besoins. Cette technologie nous permet d'exploiter les propriétés des objets de manière plus flexible et améliore la lisibilité et la maintenabilité du code. Nous verrons ensuite comment définir des POJO avec des clés variables et donnerons quelques exemples de scénarios d'application pratiques.

Contenu de la question

J'essaie de convertir json en pojo où les clés sont mutables. Par exemple : Berlin, Paris dans l'exemple suivant :

{
  "berlin": {
    "en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
  },
  "paris": {
    "en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
  }
}
Copier après la connexion

Pour tout ce qui se trouve dans la clé variable (Berlin, Paris), par exemple :

"en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
Copier après la connexion

La classe que j'ai définie est la suivante :

class citydata {

map <string, languagedata> locale;
}

class languagedata {
string displayname;
list<string> supportedlanguage;
string fullexample;
}
Copier après la connexion

Enfin pour accueillir les variableskeys, j'ai défini un nouvel objet comme suit :

class city {

map<string, citydata> city;

}
Copier après la connexion

Cependant, j'obtiens l'erreur suivante :

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Berlin" , not marked as ignorable (0 known properties: ])
Copier après la connexion

Comment stocker les clés variables dans pojo ? C'est quelque chose d'essentiel, donc je souhaite le récupérer via la valeur de lecture du Jackson ObjectMapper.

Solution de contournement

Vous devez analyser les données comme map<string、citydata>, et non comme un objet contenant une propriété de carte. Votre niveau racine est la carte.

map<string, citydata> parsed = objectmapper.readvalue(
  input,
  new typereference<map<string, citydata>>() {});
Copier après la connexion

En utilisant votre type city, vous pouvez analyser json en utilisant la structure suivante :

{
  "city": {
    "Berlin": { ... },
    "Paris": { ... }
  }
}
Copier après la connexion

où votre json actuel est imbriqué sous la clé "city" (map<string、citydata> city).

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal