0

我正在尝试以 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>();
4

1 回答 1

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"
  }
]
于 2013-08-24T04:48:39.983 回答