Интерполировать значения JSON в строку - PullRequest
1 голос
/ 13 июня 2019

Я пишу приложение / класс, который примет текстовый файл шаблона и значение JSON и вернет интерполированный текст обратно вызывающей стороне.

Необходимо определить формат текстового файла шаблона ввода. Например: my name is ${fullName}

Пример JSON:

{"fullName": "Elon Musk"}

Ожидаемый результат:

"my name is Elon Musk"

Я ищу широко используемую библиотеку / форматы, которые могут это сделать.

  1. В каком формате должен быть текстовый файл шаблона?

  2. Какая библиотека будет поддерживать формат текстового файла шаблона, определенный выше, и принимать значения JSON?

Мой собственный синтаксический анализатор легко построить, но есть много крайних случаев, о которых нужно позаботиться, и я не хочу изобретать велосипед.

Например, если у нас есть немного сложный объект JSON со списками, вложенными значениями и т. Д., То я должен также подумать о них и реализовать его.

Ответы [ 3 ]

1 голос
/ 13 июня 2019

Я всегда использовал библиотеку org.json.Находится по адресу http://www.json.org/.

. Это упрощает просмотр объектов JSON.

Например, если вы хотите создать новый объект:

JSONObject person = new JSONObject();
person.put("fullName", "Elon Musk");
person.put("phoneNumber", 3811111111);

JSONОбъект будет выглядеть так:

{
"fullName": "Elon Musk",
"phoneNumber": 3811111111
}

Это похоже на извлечение из объекта

String name = person.getString("fullName");

Вы можете считывать файл с помощью BufferedReader и анализировать его, как хотите.Надеюсь, я выручил.:)

0 голосов
/ 13 июня 2019

Вы можете попробовать это: https://github.com/alibaba/fastjson

Fastjson - это библиотека Java, которую можно использовать для преобразования объектов Java в их представление JSON.Его также можно использовать для преобразования строки JSON в эквивалентный объект Java.Fastjson может работать с произвольными объектами Java, включая ранее существующие объекты, исходный код которых у вас отсутствует.

0 голосов
/ 13 июня 2019

Вот как мы это делаем.

Map inputMap = ["fullName": "Elon Musk"]
        String finalText = StrSubstitutor.replace("my name is \${fullName}", inputMap)

...