2015-01-22 11 views
6

Poszukuję biblioteki Java, która może dokonać podstawiania zmiennych podczas przenoszenia obiektu Json do obiektu w locie.Zastępcze zmienne zastępcze JSON

Na przykład, szablon Json musiałby zmienne miejsca podstawienia/zastępcze, takie jak:

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

że spowodowałoby obiektu Java reprezentujących następujące raz marshaled:

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

Co chcę jest coś w tym stylu:

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

można również użyć prostej biblioteki mapowania obiektów, która dałaby ten format z klasy typu 'class User {String name; int wiek} ' – njzk2

Odpowiedz

0

Jest to naprawdę poza zakresem dla bibliotek JSON, ponieważ sam format JSON nie ma wsparcia lub pojęcia substytucji zmiennych. Najlepszym rozwiązaniem może być skorzystanie z biblioteki JSON (takiej jak Jackson), aby uzyskać reprezentację drzewa (dla Jacksona będzie to JsonNode), a następnie przejść przez nią i użyć innej biblioteki do obsługi podstawiania tekstowego. Jest wiele rzeczy, które mogą to zrobić, od stringtemplate do innych (być może MessageFormat, do której odnosi się inna odpowiedź).

Może być również możliwe cofnięcie drugiego, jeśli twoje zastępstwa nigdy nie będą śmieszne "śmieszne postacie" (cytaty, podania); jeśli tak, możesz najpierw użyć biblioteki szablonów, parsera JSON, a następnie wysyłać przetworzony tekst. Ale jest nieco bardziej ryzykowny, ponieważ zazwyczaj istnieje jeden przypadek, w którym kończy się próba dodania cytatu, powiedzmy, a następnie przetwarzanie nie powiedzie się.

Powiązane problemy