2015-01-22 22 views
6

Ich bin auf der Suche nach einer Java-Bibliothek, die Variablensubstitution ausführen kann, wenn Json zu einem Objekt im laufenden Betrieb marshaliert wird.Platzhalter für JSON-Variablensubstitution

Zum Beispiel würde die Json Template-Variable haben Substitutionsstellen/Platzhalter wie:

{ 
    "User": { 
    "Name": "${name}", 
    "Age": ${age} 
    } 
} 

, die in der Java-Objekt führen würde repräsentieren die einmal gemarshallte folgende:

{ 
    "User": { 
    "Name": "Elvis", 
    "Age": 80 
    } 
} 

Was ich will, ist etwas in der Form von diesem:

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\user.json.template"), User.class, "Elvis", 80); 
+1

https://github.com/typesafehub/config ?? –

+0

Sie könnten auch eine einfache Objekt-Mapping-Bibliothek verwenden, die Ihnen das Format aus einer Klasse wie 'class User {String name; int age} ' – njzk2

Antwort

0

Dies ist wirklich außerhalb des Umfangs für JSON-Bibliotheken, da JSON-Format selbst keine Unterstützung oder Vorstellung der Variablensubstitution hat. Ihre beste Wette könnte sein, eine JSON-Bibliothek (wie Jackson) zu verwenden, um eine Baumdarstellung zu erhalten (für Jackson wäre das JsonNode), diese dann zu durchqueren und eine andere Bibliothek zu verwenden, um Textersetzungen zu verarbeiten. Es gibt viele, die das tun können, von stringtemplate zu anderen (vielleicht MessageFormat, dass andere Antwort bezieht sich auf).

Es kann auch möglich sein, die andere, wenn Ihre Ersetzungen nie lustige "lustige Zeichen" (Zitate, Zeilenumbrüche); Wenn dies der Fall ist, könnten Sie zuerst die String-Templating-Bibliothek verwenden, dann den JSON-Parser, der als nächstes den verarbeiteten Text einspeist. Aber es ist ein bisschen riskanter, als normalerweise gibt es schließlich einen Fall, in dem Sie am Ende versuchen, ein Zitat zu addieren, sagen, und dann Parsing scheitert.

Verwandte Themen