Heim  >  Artikel  >  Definieren Sie POJOs mit veränderlichen Schlüsseln

Definieren Sie POJOs mit veränderlichen Schlüsseln

王林
王林nach vorne
2024-02-09 08:42:09431Durchsuche

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"
    }
  }
}

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"
    }

Die von mir definierte Klasse lautet wie folgt:

class citydata {

map <string, languagedata> locale;
}

class languagedata {
string displayname;
list<string> supportedlanguage;
string fullexample;
}

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

class city {

map<string, citydata> city;

}

Allerdings erhalte ich die folgende Fehlermeldung:

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

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 map4b77346e33c8acbbb76d82c1dabac30c 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>>() {});

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

{
  "city": {
    "Berlin": { ... },
    "Paris": { ... }
  }
}

wo Ihr tatsächlicher JSON unter dem Schlüssel „city“ (map4b77346e33c8acbbb76d82c1dabac30c 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen