输出JSON

时间:2013-08-24 04:35:24

标签: java json jackson jax-rs

我正在尝试以JSON格式输出一个列表,但它并没有按照我想要的方式出现。

这是输出:

{
    "songMap": [
        {
            "SID": "699",
            "SDID": "1079287588763212246"
        },
        {
            "SID": "700",
            "SDID": "1079287588763212221"
        },
        {
            "SID": "701",
            "SDID": "1079287588763212230"
        }
    ]
}

以下是我希望它的样子:

[
        {
            "SID": "699",
            "SDID": "1079287588763212246"
        },
        {
            "SID": "700",
            "SDID": "1079287588763212221"
        },
        {
            "SID": "701",
            "SDID": "1079287588763212230"
        }
]

我不需要也不想要中间数组,我不知道为什么要添加它。我有一个自定义类如下:

public class songID {
    public int SID;
    public String SDID;

    public songID() {}

    public songID(int key, String value) {
        this.SID  = key;
        this.SDID = value;
    }
}

这是它被序列化的方式:

Gson gson = new Gson();
String json = gson.toJson(songMap);

如果我打印出字符串json,它看起来就像我想要的那样。但是服务器正在添加额外的“SongMap”。以下是我在类顶部声明变量的方法:

private List<songID> songMap;
.....
songMap = new ArrayList<songID>();

1 个答案:

答案 0 :(得分:0)

您似乎没有直接序列化List,而是将List命名为songMap的容器。 (顺便说一下令人困惑的名字选择。)如果你直接序列化List,它会很好,如下所示。

songMap = new ArrayList<songID>();
songMap.add(new songID(699, "1079287588763212246"));
songMap.add(new songID(700, "1079287588763212221"));

GsonBuilder gb = new GsonBuilder();
Gson gson = gb.setPrettyPrinting().create();

System.out.println(gson.toJson(songMap));

输出:

[
  {
    "SID": 699,
    "SDID": "1079287588763212246"
  },
  {
    "SID": 700,
    "SDID": "1079287588763212221"
  }
]