0

我试图只获取可以存储到 ArrayList 或 Array 的 JSONArray 的值。我的代码目前是这样的:

  JSONArray params = (JSONArray) res.get("params");
  for (int j = 1; j <= params.size(); j++){

             Object chatter = params.get(j);
             String chatterName = chatter.toString();
             System.out.println("ChatterName: "+chatterName);
             int index = 2;
             listModel.add(index, chatterName);  
             index++;
  }

我的问题是我也拿到了钥匙:

ChatterName: Steve
ChatterName: Blubb
ChatterName: 2
ChatterName: 3
ChatterName: Joey
ChatterName: 4
ChatterName: Chris

这是 JSON 的样子:

    Input Stream(Response vom Server): {"statuscode":"200","sequence":1382,"response":"sendWho","params":["1","Steve","Blubb","2","3","Joey","4","Chris"]}
4

3 回答 3

1

如果您的意思是要将其转换为 ArrayList,请执行以下操作:

JSONArray params = (JSONArray) res.get("params");
ArrayList<String> data = new ArrayList<>(params.size());

for (int j = 0; j < data.size(); j++) {
    data.add(params.get(j).toString());
}
于 2015-05-25T18:50:30.687 回答
0

您的 JSONArray 没有很好地创建,因为您的键存储为值。看一眼:

  "params":["1","Steve","Blubb","2","3","Joey","4","Chris"]

你应该像这样构建你的数组

JSONArray list = new JSONArray();
JSONObject obj = new JSONObject();
obj.put("1","Steve");
list.add(obj);
...
JSONObject main = new JSONObject();
main.put("params",list);

如果你想检索你的值

 ArrayList<String> arr = new ArrayList<String>();
 JSONArray list = (JSONArray) main.get("params");
 for(int i=0;i<list.size();i++)
 {
      arr.add((String)((JSONObject)list.get(i)).get(i));  //because the key is the index in your case
 } 
  //arr contains your values
  //you can also convert them to an array by:
  String[] myarr =new String[arr.size()];
  myarr = arr.toArray(myarr);
于 2015-05-25T18:54:01.027 回答
0

好的,我解决了这个问题。这不是一个“简单的 json”问题,而是一个合乎逻辑的问题。我正在构建一个服务器-客户端聊天应用程序,在输入服务器要求我输入的名称之前,我将一个 id 作为客户端的键。但是我忘了删除这个密钥,因此我也得到了密钥。

于 2015-05-25T19:34:04.977 回答