我正在尝试以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>();
答案 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"
}
]