2013-12-06 3 views
0

Это было какое-то время, и я пытаюсь игнорировать некоторые неприятные проблемы, с которыми я сталкиваюсь с json в java, я новичок в этом и читаю alot, однако, разобрав json in javascript или php были намного лучше (или проще я не знаю), но теперь в java я не могу преобразовать jsonobject в jsonarray, если у него нет родителя, потому что он использует .getJsonArray ('array)Json object to json array Java (Android)

НО, это:

{"49588":"1.4 TB","49589":"1.4 TB MultiAir","49590":"1.4 TB MultiAir TCT","49591":"1.6L MultiJet","49592":"1750 Tbi","49593":"2.0L MultiJet","49594":"2.0L MultiJet TCT"} 

я не преуспеть в любом случае, чтобы преобразовать его в массив

то, что я хочу, чтобы преобразовать этот JSONObject в JSONArray петлю в пределах своих элементов и добавить их к Spinner, теперь это первый вопрос, второй вопрос: если я преобразовать это JSONArray, как я могу добавить идентификатор, текст на счетчик? так же, как HTML Выбрать тег

<option value="0">Item 1</option> 

так это вопрос и вопрос надежды кто-то может найти решение этой jsonarray вещи, не изменяя выход JSon с сайта, зная, что если я изменить и добавить родитель для этого json, JSONArray будет работать. но я хочу найти решение для этого.


Ничего особенного я имею в коде:

Просто AsynTask ответ, журнал, который показывает выход JSon я положил в начале этого вопроса

Log.d("response", "res " + response); 

// This will work 
jsonCarsTrim = new JSONObject(response); 

// This won't work 
JSONArray jdata = new JSONArray(response); 

Спасибо!

+0

Можете ли вы показать свой код? – 2Dee

+0

дубликат http: // stackoverflow.com/questions/7634518/get-jsonobject-from-jsonarray –

+0

Не совсем @NitinMisra, он получает массив и перебирает его, используя, но я даже не получаю массив и не могу перебирать jsonobject без Iterator, Я хочу использовать это, я хочу знать, как преобразовать этот тип в массив, потому что я столкнулся с этой проблемой сейчас и нуждаюсь в решении, не хочу изменять выход на веб-сайт – Emad

ответ

3

Как об этом:

JSONObject json = new JSONObject(yourObject); 
Iterator itr = json.keys(); 

ArrayList<CharSequence> entries = new ArrayList<CharSequence>(); 
ArrayList<Integer> links = new ArrayList<Integer>(); 

int i = 0; 
while(itr.hasNext()) { 
    String key = itr.next().toString(); 
    links.add(i,Integer.parseInt(key)); 
    entries.add(i, (CharSequence) json.getString(key)); //for example 
    i++; 
} 

//this is the activity 
entriesAdapter = new ArrayAdapter<CharSequence>(this, 
      R.layout.support_simple_spinner_dropdown_item, entries); 
//spinner is the spinner the data is added too 
spinner.setAdapter(entriesAdapter); 

это должно работать (работает для меня), вы, возможно, придется изменить код. Как показано, я добавляю все записи объекта json в Spinner, где мой json-ключ является значением индекса, а связанное значение String объекта json будет отображаться как запись Spinner (название) в моей активности.

Теперь, когда элемент выбран, выберите SelectedItemPosition, и вы можете найти его в списке массивов ссылок, чтобы получить реальное значение.

+0

Я использовал это для предыдущих объектов, он работает, но я хочу найти решение для моей конкретной проблемы, иначе кто-то должен сказать мне, что он не работает, тогда я не буду искать решение, и я думаю, что есть решение для этого, по крайней мере, ручного взрыва запятой. Мой другой вопрос: как добавить это значение/текст в счетчик – Emad

+0

Что такое «значения»? – Emad

+0

Извините, там нет значений (скопируйте и вставьте ошибку), я использовал очень похожий код в одном из моих последних проектов. – bbuecherl

0

У вас есть тип объекта JSON, а не тип массива. Для итерации вы можете получить Iterator от метода keys.

+0

1 - невозможно конвертировать это к jsonarray? 2 - как я могу добавить это значение, текст к счетчику через Итератор? – Emad