1

Je voudrais convertir un fichier de propriétés Java en JSON avec des objets imbriqués. J'ai suivi un exemple que j'ai trouvé here mais je n'arrive pas à le faire fonctionner.Java Propriétés fichier à JSON en utilisant Jackson

Par exemple, avec:

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

Je veux:

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

C'est ce que j'ai jusqu'à présent:

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); 
} 

La sortie ressemble à ceci:

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

Si vous souhaitez simplement imprimer la structure JSON du fichier de propriétés avec des parenthèses, vous pouvez utiliser un ObjectMapper. Voir cette référence: https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-jackson/ – suguspnk

+0

@suguspnk Ce n'est pas tout ce que je veux faire. Je veux convertir un fichier de propriétés en JSON avec une structure imbriquée (non plate). – ksl

+0

Maintenant, je suis confus. @. @ – suguspnk

Répondre

1

Je l'ai compris.

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); 
}