2015-01-22 17 views
6

Sto cercando una libreria Java in grado di eseguire la sostituzione delle variabili durante il marshalling di JSON su un oggetto al volo.Segnaposto sostituzioni variabili JSON

Ad esempio, il modello JSON avrebbe siti sostituzione delle variabili/segnaposto come:

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

che si tradurrebbe in oggetto Java rappresentante il seguente volta marshaled:

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

Quello che voglio è qualcosa sulla falsariga di questo:

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

potresti anche usare una semplice libreria di mappatura degli oggetti, che ti darebbe quel formato da una classe come 'class User {String name; int anni} – njzk2

risposta

0

Questo è davvero fuori portata per le librerie JSON, in quanto formato JSON sé non ha alcun sostegno o di concetto di sostituzione di variabile. La soluzione migliore potrebbe essere quella di utilizzare una libreria JSON (come Jackson) per ottenere una rappresentazione ad albero (per Jackson che sarebbe JsonNode), quindi attraversarla e utilizzare un'altra libreria per la gestione della sostituzione testuale. Ci sono molti che possono farlo, da stringtemplate ad altri (forse MessageFormat a cui si riferisce un'altra risposta).

Potrebbe anche essere possibile ripristinare l'altro, se le sostituzioni non saranno mai divertenti "caratteri divertenti" (virgolette, linefeeds); in tal caso, è possibile utilizzare prima la stringa di configurazione delle stringhe, il parser JSON successivo alla successiva elaborazione del testo elaborato. Ma è un po 'più rischioso, come di solito c'è un caso in cui si finisce per provare ad aggiungere una citazione, per esempio, e quindi l'analisi fallisce.

Problemi correlati