Отображение элементов файла свойств в виде массива 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());
                        }
Другие вопросы по тегам