我想把我的属性文件显示为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());
}