2015-01-22 2 views
6

Я ищу библиотеку Java, которая может выполнять подстановку переменных при маршалинге Json на объект «на лету».Замещающие замещающие переменные JSON

Например, шаблон Json будет иметь переменные сайты замещения/заполнители, такие как:

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

, что приведет к объекту Java, представляющему следующий раз выстраивал:

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

То, что я хочу что-то в соответствии с этим:

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

вы также можете использовать простую библиотеку сопоставления объектов, которая предоставит вам этот формат из класса, такого как 'class User {String name; int age} ' – njzk2

ответ

0

Это действительно выходит за рамки для библиотек JSON, поскольку сам формат JSON не имеет поддержки или понятия переменной подстановки. Лучше всего использовать библиотеку JSON (например, Jackson) для получения древовидного представления (для Джексона, который будет JsonNode), затем перейдите к нему и используйте другую библиотеку для обработки текстовой подстановки. Есть много, которые могут это сделать, от stringtemplate до других (возможно, MessageFormat, на которые ссылается другой ответ).

Возможно, также возможно вернуть другое, если ваши замены никогда не будут смешными «забавными персонажами» (цитаты, переводы строк); если это так, вы можете сначала использовать шаблон templating lib, JSON-парсер следующего кормления обработанного текста. Но это немного рискованно, так как обычно в конечном итоге есть один случай, когда вы в конечном итоге пытаетесь добавить цитату, скажем, а затем синтаксический анализ не выполняется.

Смежные вопросы