我正在尝试使用特定格式的Java编写JSON文件。例如:假设我想以下列格式编写JSON文件:
{
"resource":[{"name":"Node1"}],
"literals":[{"literal":"A", "B", "C", "D"}]
}
正如您可能已经注意到的那样,在resource
中,我想在那里和literals
中编写字符串,我喜欢有字符串的字符串。这是我的Java代码:
public void writeJSON() {
public ArrayList<String> literals = new ArrayList<String>();
literals.add("A");
literals.add("B");
literals.add("C");
literals.add("D");
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
jsonObject.put("name", resources.getResource());
resources.setLiterals(literals);
jsonObject.put("literal", resources.getLiterals());
try {
FileWriter file = new FileWriter("/Users/Documents/sample.json");
file.write(jsonObject.toJSONString());
file.flush();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我设置并获取JSON文件值的Java文件:
public class Resources {
String resource;
ArrayList<String> literals;
public Resources()
{
}
public void setResource(String resource)
{
this.resource = resource;
}
public String getResource()
{
return resource;
}
public void setLiterals(ArrayList<String> literals)
{
this.literals = literals;
}
public ArrayList<String> getLiterals()
{
return literals;
}
}
任何人都可以帮助我如何基于上面提供的格式创建JSON文件。非常感谢您的帮助。
答案 0 :(得分:3)
让我们开始尝试创建的Json
无效。
这就是你所拥有的:
{
"resource":[{"name":"Node1"},
{"name":"Node2"}],
"literals":[{"source":"A", "B", "C", "D"},
{"source":"E", "F", "G", "H"}]
}
正如您所见,resource
看起来没问题 - 即它是一个包含List
个对象的对象。
另一方面,literals
是一个包含List
内容的对象?因为{"source":"A", "B", "C", "D"}
和{"source":"E", "F", "G", "H"}
不是有效的Json
。
首先弄清楚这一点,然后更新您的java
代码,我们将从那里开始。
如果:{"resource":[{"name":"Node1"}],"literals":[{"literal":["A","B","C","D"]}]}
是可取的,那么您可以通过以下方式实现这一目标(我将使用Gson):
JsonWriter jsonWriter = null;
try {
jsonWriter = new JsonWriter(new FileWriter("test.json"));
jsonWriter.beginObject();
jsonWriter.name("resource");
jsonWriter.beginArray();
jsonWriter.beginObject();
jsonWriter.name("name");
jsonWriter.value("Node1");
jsonWriter.endObject();
jsonWriter.endArray();
jsonWriter.name("literals");
jsonWriter.beginArray();
jsonWriter.beginObject();
jsonWriter.name("literal");
jsonWriter.beginArray();
jsonWriter.value("A");
jsonWriter.value("B");
jsonWriter.value("C");
jsonWriter.value("D");
jsonWriter.endArray();
jsonWriter.endObject();
jsonWriter.endArray();
jsonWriter.endObject();
} catch (IOException e) {
...
}finally{
try {
jsonWriter.close();
} catch (IOException e) {
...
}
}