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-simple」の問題ではなく、論理的な問題でした。サーバーとクライアントのチャット アプリケーションを構築しています。サーバーから要求された名前を入力する前に、ID をクライアントのキーとして入力します。しかし、このキーを削除するのを忘れていたため、キーも取得してしまいました。

于 2015-05-25T19:34:04.977 に答える