如何使用org.JSON在Java中生成一个JSON,它看起来像这个示例?

如何使用org.JSON在Java中生成一个JSON,它看起来像这个示例?,java,json,Java,Json,所以,我用java做了一些类似的尝试,但是输出看起来不太好 我尝试使用以下代码示例创建json文件: String name = "usericals.json"; JSONObject jsonObj = new JSONObject(); JSONArray scene = new JSONArray(); JSONArray element = new JSONArray(); jsonObj.put("

所以,我用java做了一些类似的尝试,但是输出看起来不太好

我尝试使用以下代码示例创建json文件:

        String name = "usericals.json";
        JSONObject jsonObj = new JSONObject();

        JSONArray scene = new JSONArray();
        JSONArray element = new JSONArray();


        jsonObj.put("scene", scene);
        for (int i = 0; i < 1; i++) {
            for (int ii = 0; ii < 1; ii++) {
                element.put(write);
            }
            jsonObj.put("element", element);

        }
        scene.put(element);

        try (PrintWriter writer = new PrintWriter("new.json", "UTF-8")) {
            writer.write(jsonObj.toString(4));
        } catch (Exception ex) {
            System.out.println("exception " + ex);
        }

我建议用图书馆来做那个。杰克逊或格森是个不错的选择

您可以创建POJO,然后使用Jackson的ObjectMapper,而不是逐个字段手动创建json。例如:

public class Car {

    private String color;
    private String type;

    // standard getters setters
}
然后

ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car("yellow", "renault");
objectMapper.writeValue(new File("target/car.json"), car);
这将给

{"color":"yellow","type":"renault"}

谷歌有很多杰克逊教程

递归地使用JSONObject。尝试类似的方法(我添加了一些额外的缩进,这样可以很容易地读取,但在实际项目中,更好地使用函数):


注意,像这样,您可以手动生成JSON,但是还有其他库可以扫描对象以生成JSON。根据您的需要,它可能会更简单,但请记住,这样做会增加所有开销,因为您需要在内存中保存同一棵树的两个副本。使用普通java对象处理层次结构可能也是一个问题。

是的,您肯定可以,示例JSON是有效的。你能发布你的代码输出的JSON吗?这样可以节省读者一点时间来弄清楚这一点吗?同样正如StaxMan所说,我建议您使用像Jackson这样的库来实现类似的功能,这将为您省去所有这些循环带来的很多麻烦。简单地说一下您为什么要使用
org.json
library可能会更好:有许多Java json库通常使用起来更方便,因此有一个选项可能是(也可能不是,取决于你的情况)使用另一个库,如GSON或Jackson。我用输出更新了我的问题,但输出与结果相差甚远。你可能知道这将如何与库org.json一起工作吗?最好是在Jackson中使用模块。有支持org.json->的模块,但一般来说,你应该使用Jackson而不是org.json,而不是它
{"color":"yellow","type":"renault"}
JSONObject json = new JSONObject();
  JSONArray scene = new JSONArray();
    JSONObject node = new JSONObject();
    node.put("id", 0);
    node.put("calendar_event", "urlaub");
      JSONArray element = new JSONArray();
        JSONObject enode = new JSONObject();
        enode.put("anything", "");
      element.add(enode);
      //...
    node.put("element", element);
  scene.add(node);
json.put("scene", scene);
//...