1

Ich möchte eine Java-Eigenschaftendatei in JSON mit verschachtelten Objekten konvertieren. Ich folgte einem Beispiel, das ich here fand, aber ich kann es nicht zum Funktionieren bringen.Java-Eigenschaftendatei zu JSON mit Jackson

Zum Beispiel gegeben:

objectA.version=1.0 
objectA.hostname=192.168.0.11 
objectA.port=9989 
objectB.hostname=10.0.2.15 
objectB.port=9998 

Ich möchte:

{ 
    “objectA” : { 
      "version” : "1.0" 
      "host” : “192.168.0.11”, 
      "port" : 9989 
      }, 
    “objectB” : { 
      "host” : “10.0.2.15”, 
      "port" : 9998 
      } 
} 

Dies ist, was ich bisher:

static class Endpoint 
{ 
    @JsonProperty("objectA") 
    public ObjectA objectA; 

    @JsonProperty("objectB") 
    public ObjectB objectB; 

} 
static class ObjectA 
{ 
    public String hostname; 
    public String port; 
    public String version; 
} 

static class ObjectB 
{ 
    public String hostname; 
    public String port; 
} 

try (InputStream input = getClass().getClassLoader().getResourceAsStream("file.properties")) 
{ 
    JavaPropsMapper mapper = new JavaPropsMapper(); 
    Endpoint host = mapper.readValue(input, Endpoint.class); 
    String asText = mapper.writeValueAsString(host); 
    System.out.println(asText); 
} 

Die Ausgabe sieht wie folgt aus:

objectA.version=1.0 
objectA.hostname=192.168.0.11 
objectA.port=9989 
objectB.hostname=10.0.2.15 
objectB.port=9998 
+0

Wenn Sie nur die JSON Struktur der Eigenschaften drucken möchten Datei mit Klammern und was nicht, können Sie eine ObjectMapper verwenden. Siehe diese Referenz: https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-jackson/ – suguspnk

+0

@suguspnk Das ist nicht alles, was ich tun möchte. Ich möchte eine Eigenschaftendatei in JSON mit einer verschachtelten (nicht flachen) Struktur konvertieren. – ksl

+0

Jetzt bin ich verwirrt. @. @ – suguspnk

Antwort

1

Ich habe es herausgefunden.

try (InputStream input = getClass().getClassLoader().getResourceAsStream("file.properties")) 
{ 
    JavaPropsMapper mapper = new JavaPropsMapper(); 
    Endpoint host = mapper.readValue(input, Endpoint.class); 
    // String asText = mapper.writeValueAsString(host); 

    // add this 
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); 
    String asText = ow.writeValueAsString(host); 
    // 

    System.out.println(asText); 
} 
Verwandte Themen