如何通过在 Java 中使用简单的 JSON 来获取 JSON 数组的值?

How to get the values of a JSONArray by using simple JSON in Java?

我正在尝试获取可以存储到 ArrayList 或数组的 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"]}

如果您的意思是要将其转换为 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());
}

您的 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);

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