如何在Java中以特定格式创建JSON文件

时间:2013-11-13 21:13:40

标签: java json arraylist format

我正在尝试使用特定格式的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文件。非常感谢您的帮助。

1 个答案:

答案 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) {
        ...
    }
}