1

我正在尝试使用 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 文件。您的帮助将不胜感激。

4

1 回答 1

3

让我们开始Json您尝试创建的无效。这就是你所拥有的:

{
"resource":[{"name":"Node1"}, 
            {"name":"Node2"}],

"literals":[{"source":"A", "B", "C", "D"},
            {"source":"E", "F", "G", "H"}]
}

如您所见resource,看起来不错 - 即它是一个包含List对象的对象。另一方面literals是一个包含List什么的对象?因为 not{"source":"A", "B", "C", "D"}也不{"source":"E", "F", "G", "H"}是有效的Json.

首先弄清楚这一点,然后更新您的java代码,我们将从那里开始。

如果 this:{"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) {
        ...
    }
}
于 2013-11-13T21:27:56.273 回答