2013-08-29 9 views
0

Мне нужна помощь здесь. Я все еще новичок в разработчике Android.JSONObject to JSONArray

Вот пример данных

strAPI_TERMINAL= "{ 'terminal': { 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' }}" 

Мне нужно, чтобы разобрать этот объект данных в JSONArray

Вот то, что я ве сделал ...

JSONObject jsonObject = new JSONObject(strAPI_TERMINAL); 
JSONArray terminal_array = new JSONArray(); 
JSONArray t_array = terminal_array.put(jsonObject); 

Когда сеанс работы данные ... да, это было разбор массива точно так же, как это

t_array[{"terminal":{"fmt_id":"fmt0002","id":2,"terminal_type":"multiple"}]

Но когда я хочу использовать его, чтобы получить "терминал" данные с помощью этого ...

JSONArray TERMINAL_JSON=new JSONArray(t_array.getJSONObject(i).getString("terminal").toString()); 

Он говорит:

Error:Value {"id":2,"fmt_id":"fmt0002","terminal_type":"multiple"} 

Любой, пожалуйста, помогите мне ???

спасибо за любую помощь ...

ответ

6

Попробуйте парсинг JSON, как показано ниже:

JSONObject obj1 = new JSONObject(strAPI_TERMINAL); 
try { 
    JSONArray result = obj1.getJSONArray("terminal"); 
for(int i=0;i<=result.length();i++) 
{ 
    String Id=result.getString("fmt_id"); 
     String terminalType=result.getString("terminal_type"); 
} 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

Надеется, что это поможет.

Благодаря

+0

немного коррекция: result.length() length - это имя метода в этом случае – heximal

+0

@heximal Спасибо за исправление. :) – GrIsHu

0

По вашему code't_array»является массивом JSONObject. Чтобы получить доступ к каждому элементу в 't_array', вам нужно будет получить каждый элемент как JSONObject, а затем получить доступ к значениям этого JSONObject.

Значение термина «терминал» - это объект json, который вы не можете преобразовать в массив json точно так же.

Чтобы получить доступ к значению «Терминал» сделать что-то вроде следующего

t_array.getJSONObject(i).getJSONObject("terminal"); 

Приведенный выше код будет возвращать следующий как JSONObject

{ 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' } 
+0

Да ... но когда я делаю цикл это repeated..because я не могу взять индекс данных ... не нравится JSONArray..i можно использовать индекс, чтобы получить точные данные .. .Есть идеи? –

+0

А также ... терминал уже разбирается с Array, если вы видите log t_array [{"terminal": {"fmt_id": "fmt0002", "id": 2, "terminal_type": "multiple"}]. .. но я не уверен, что он действительно преобразован или нет ... –

+0

Терминал не был разобран массивом, он был добавлен в массив. Чего вы пытаетесь достичь? – Josnidhin

1

Как сказал Josnidhin, «Терминал» является JSON Объект. Если вы хотите, чтобы массив, вам нужно сделать так, в первую очередь (обратите внимание на скобки массива):

strAPI_TERMINAL= "{ 'terminal': [{ 'id': 2, 'fmt_id': 'fmt0002', 'terminal_type': 'multiple' }]}" 

Вы действительно просто пытается перебирать клавиши в терминале объекта? Если это так, может быть, вы хотели бы проверить это сообщение: How to iterate over a JSONObject?

Смежные вопросы