2015-05-25 3 views
0

Я пытаюсь получить только значения JSONArray, которые я могу хранить в ArrayList или Array. Мой код это на данный момент:Как получить значения JSONArray, используя простой JSON в Java?

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"]} 
+0

Вы имеете в виду, что вы также получаете ключи в своем спискеModel? Ваш вопрос непонятен, объясните больше. – RE350

+0

О, я сожалею об этом. Да, я хочу получить все значения из json (в этом случае имена chatters) и поместить их в Jlist. И моя проблема в том, что есть также такие ключи, как «2», «3» и т. Д. Надеюсь, теперь моя проблема более ясна. – n00bst3r

+0

В соответствии с вашими JSON «1», «2», «3» и «4» также являются значениями не ключей. «params»: [«1», «Steve», «Blubb», «2», «3», «Joey», «4», «Chris»] – RE350

ответ

0

Хорошо, я решил эту проблему. Это была не «простая проблема», а логическая. Я создаю приложение клиент-клиент для сервера и перед тем, как вводить имя, которое я запрашиваю с сервера, я добавляю идентификатор в качестве ключа для клиента. Но я забыл удалить этот ключ, и из-за этого я тоже получаю ключи.

0

Если вы имеете в виду, что вы хотите преобразовать его в 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()); 
} 
+0

Привет, THX для вашего ответа. Моя проблема в том, что я получаю значения, такие как 1,2 и т. д. althoug, я не добавлял их в массив, и я понятия не имею, почему – n00bst3r

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); 
+0

хорошая идея. Но если я сделаю так, то произойдет следующее: {"statuscode": "200", "sequence": 1167, "response": "sendWho", "params": [{"1": "1"}, {"2": "Daniel"}]} – n00bst3r

+0

@ n00bst3r Есть ли проблема с этим? Это именно то, что я ожидаю – Dien