У меня было такое же требование пару лет назад, когда мне приходилось формировать JSON в виде String, используя значения ResultSet
, полученные из Database
, без создания каких-либо зависимостей POJO
class или Object to JSON conversion
. Затем я использовал потрясающую библиотеку Apache Commons с именами commons-text
и org. apache .commons.text.StringSubstitutor из этой библиотеки для замены динамических c значений заполнителей в String. Библиотеку можно добавить в ваш проект, как показано ниже:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.8</version>
</dependency>
Ниже приведен фрагмент кода, который необходим для динамической замены значений заполнителей в строке.
String json = "{ \"asin\":\"<asin>\", \"appdetails\": { \"asintype\":\"<asintype>\"," +
"\"app_name\":\"<appname>\", \"app_username\":\"<appusername>\",\"app_password\":\"<password>\"," +
"\"service_provider_uname\":\"<serviceid>\",\"service_provider_password\": \"<providepassword>\"," +
"\"marketplace\":\"<marketplace>\", \"accountname\":\"<accountname>\", " +
"\"deviceusername\":\"<deviceusername>\", \"devicepassword\":\"<devicepassword>\", " +
"\"networkname\":\"<networkname>\", \"networkpassword\":\"<networkpassword>\"}}";
Map<String, String> values = new HashMap<>();
values.put("asin", rs.getString("asin"));
values.put("appdetails", rs.getString("appdetails"));
values.put("asintype", rs.getString("asintype"));
values.put("appname", rs.getString("appname"));
values.put("appusername", rs.getString("appusername"));
values.put("password", rs.getString("password"));
values.put("serviceid", rs.getString("serviceid"));
values.put("providepassword", rs.getString("providepassword"));
values.put("marketplace", rs.getString("marketplace"));
values.put("accountname", deviceDataRS.getString("accountname"));
values.put("deviceusername", deviceDataRS.getString("deviceusername"));
values.put("devicepassword", deviceDataRS.getString("devicepassword"));
values.put("networkname", deviceDataRS.getString("networkname"));
values.put("networkpassword", deviceDataRS.getString("networkpassword"));
String finalJson = StringSubstitutor.replace(json, values, "<", ">");