将属性文件元素显示为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,但徒劳。请问我该怎么办?这不是一个重复的问题,因为我正在使用属性类和我已经尝试过的建议答案没有工作。

可以循环遍历属性并将键/值添加到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());
    }

最新更新