Heim > Java > Hauptteil

Definieren Sie POJOs mit veränderlichen Schlüsseln

王林
Freigeben: 2024-02-09 08:42:09
nach vorne
484 Leute haben es durchsucht

Der PHP-Editor Zimo führt Sie in diesem Artikel in die Verwendung variabler Schlüssel zum Definieren von POJOs (einfache alte Java-Objekte) ein. In der Programmierung bezieht sich POJO auf ein einfaches Java-Objekt, das nicht von einem bestimmten Framework oder einer bestimmten Bibliothek abhängt. Variable Schlüssel bedeuten, dass bei der Definition eines POJO die Schlüssel (Eigenschaftsnamen) je nach Bedarf dynamisch geändert oder erweitert werden können. Diese Technologie ermöglicht uns einen flexibleren Umgang mit Objekteigenschaften und verbessert die Lesbarkeit und Wartbarkeit von Code. Als Nächstes befassen wir uns mit der Definition von POJOs mit variablen Schlüsseln und geben einige Beispiele für praktische Anwendungsszenarien.

Frageninhalt

Ich versuche, JSON in Pojo zu konvertieren, wo die Schlüssel veränderbar sind. Zum Beispiel: Berlin, Paris im folgenden Beispiel:

{
  "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"
    }
  }
}
Nach dem Login kopieren

Für alles innerhalb des Variablenschlüssels (Berlin, Paris), zum Beispiel:

"en-us": {
      "displayname": "us",
      "supportedlanguage": [
        "us"
      ],
      "fullexample": "hello us"
    },
    "en-ca": {
      "displayname": "ca",
      "supportedlanguage": [
        "ca"
      ],
      "fullexample": "hello ca"
    }
Nach dem Login kopieren

Die von mir definierte Klasse lautet wie folgt:

class citydata {

map <string, languagedata> locale;
}

class languagedata {
string displayname;
list<string> supportedlanguage;
string fullexample;
}
Nach dem Login kopieren

Um schließlich Variablenschlüssel unterzubringen, habe ich ein neues Objekt wie folgt definiert:

class city {

map<string, citydata> city;

}
Nach dem Login kopieren

Allerdings erhalte ich die folgende Fehlermeldung:

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Berlin" , not marked as ignorable (0 known properties: ])
Nach dem Login kopieren

Wie speichere ich variable Schlüssel in Pojo? Das ist etwas Wesentliches, deshalb möchte ich es über Jackson Objectmapper Readvalue abrufen.

Problemumgehung

Sie müssen die Daten als map<string、citydata> analysieren, nicht als Objekt, das eine Karteneigenschaft enthält. Ihre Root-Ebene ist die Karte.

map<string, citydata> parsed = objectmapper.readvalue(
  input,
  new typereference<map<string, citydata>>() {});
Nach dem Login kopieren

Mit Ihrem Typ city können Sie JSON mithilfe der folgenden Struktur analysieren:

{
  "city": {
    "Berlin": { ... },
    "Paris": { ... }
  }
}
Nach dem Login kopieren

wo Ihr tatsächlicher JSON unter dem Schlüssel „city“ (map<string、citydata> city) verschachtelt ist.

Das obige ist der detaillierte Inhalt vonDefinieren Sie POJOs mit veränderlichen Schlüsseln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage