如何用Java生成Json

时间:2015-09-08 14:35:04

标签: java json

我正在开发一个应用程序,我必须生成这样的json:

[
  {"title":"Culture","start":"Salary","end":"Work"},
  {"title":"Work","start":"Salary","end":"Work"}
]

但是我的代码会像这样生成json:

{{"name":"Culture"},[{"name":"Salary"},{"name":"Work"}],}

我的代码:

public class ParseJson {



public static class EntryListContainer {

    public List<Entry> children = new ArrayList<Entry>();
    public Entry name;

}

public static class Entry {

    private String name;

    public Entry(String name) {
        this.name = name;
    }

}



public static void main(String[] args) {
    EntryListContainer elc1 = new EntryListContainer();
    elc1.name = new Entry("Culture");
    elc1.children.add(new Entry("Salary"));
    elc1.children.add(new Entry("Work"));




    ArrayList<EntryListContainer> al = new ArrayList<EntryListContainer>();
    Gson g = new Gson();

    al.add(elc1);


    StringBuilder sb = new StringBuilder("{");
    for (EntryListContainer elc : al) {

        sb.append(g.toJson(elc.name));
        sb.append(",");
        sb.append(g.toJson(elc.children));
        sb.append(",");
    }

    String partialJson = sb.toString();

    if (al.size() > 1) {
        int c = partialJson.lastIndexOf(",");
        partialJson = partialJson.substring(0, c);
    }

    String finalJson = partialJson + "}";
    System.out.println(finalJson);

    }

}

任何人都可以帮助我以我所需的格式生成这个json吗?请提前致谢

3 个答案:

答案 0 :(得分:5)

试试这个

public class Entry {
    public String title;
    public String start;
    public String end;
}

在代码的另一部分

private ArrayList<Entry> entries = new ArrayList<>();

// Fill the entries...

String the_json = new Gson().toJson(entries);

答案 1 :(得分:1)

1)首先创建您的POJO

public class MyJSONObject {

    private String title;
    private String start;
    private String end;

    //getter and setter methods

   [...]

    @Override
    public String toString() {

    }

}

2)使用com.google.code.gson库

public static void main(String[] args) {

 {
    ArrayList<MyJSONObject> myJSONArray = new ArrayList<>();

    MyJSONObject obj = new MyJSONObject();
    obj.setTitle="Culture";
    obj.set[...]

    myJSONArray.add(obj);

    Gson gson = new Gson();

    // convert java object to JSON format,
    // and returned as JSON formatted string
    String json = gson.toJson(myJSONArray);

    System.out.println(json);
}
  

输出:[{“title”:“Culture”,“start”:“Salary”,“end”:“Work”},...]

答案 2 :(得分:0)

我建议您使用一些JSON Java API,例如Gson。从POJO对象生成字符串json或从字符串json创建POJO对象非常简单。

从POJO对象生成字符串json的代码如下:

Gson gson = new Gson();
String stringJson = gson.toJson(somePojoObject);

从字符串json创建POJO对象的代码如下:

Gson gson = new Gson();
SomePojoClass object = gson.fromJson(stringJson, SomePojoClass.class);

请注意,您无法使用循环引用序列化对象。这会导致无限递归。