Отображение элементов файла свойств в виде массива json
Я хочу показать, что у меня есть файл свойств в виде массива json: Вот мой код Java:
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");
Что я получил в файле свойств:
Info1=stack1
Info2=stack2
Вот что хочу получить
var Obj = {}
Obj.dataset= [{ "Info1":"stack1" },{ "Info2"="stack2"}];
Я пытался с Gson и JsonObject, но тщетно. Что мне делать, пожалуйста? Это не повторяющийся вопрос, потому что я использую класс свойств, и предложенные ответы, которые я уже пробовал, не сработали.
3 ответа
Вы можете зациклить свойства и добавить ключ / значение в массив Json, как показано ниже:
Properties props = new Properties();
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");
Enumeration e = props.propertyNames();
JsonArray jsonArray = new JSONArray();
while(e.hasMoreElements()) {
String key = (String) e.nextElement();
String value = props.getProperty(key);
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
jsonArray.add(jsonObject);
}
System.out.println(jsonArray.toString());
Это может быть сделано с jackson
и его ObjectMapper, как это:
Properties props = new Properties();
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");
ObjectMapper mapper = new ObjectMapper();
StringWriter writer = new StringWriter();
mapper.writeValue(writer, props);
System.out.println(writer.toString());
Выход:
{"Info2":"stack2","Info1":"stack1"}
Вот хороший урок о Джексоне.
Вы также можете использовать следующее:
Properties props=new Properties();
props.setProperty("Info1", "stack1");
props.setProperty("Info2", "stack2");
JSONArray array =new JSONArray();
Map map=new HashMap();
Iterator iter=props.keySet().iterator();
while (iter.hasNext()) {
String key=(String) iter.next();
String value=props.getProperty(key);
map.put(key, value);
}
array.put(map);
for (int i = 0; i < array.length(); i++) {
JSONObject obj=(JSONObject) array.get(i);
System.out.println(obj.toString());
}