2013-08-28 3 views
0

Мне нужно получить две информации «matricula» и «nome» от json от this url, но я не знаю, как это сделать. Я думаю, использование this class - хороший вариант, но я не знаю, как использовать метод, который получает json из url, и я не знаю, как работать с ключами массива после получения json. Мне жаль, что я прошу вас сделать всю работу, но это потому, что я новичок в android dev, и я действительно запутался с jsonarray, jsonobjects и т. Д.Получить json из url и разобрать информацию

+0

Что вы пробовали? – Triode

+0

ничего, потому что я не знаю, как обращаться с jsonarray и jsonobject на java, так что это вопрос начала. –

+0

попробуйте эту библиотеку Джексона, она может декодировать вашу сущность из InputStream несколькими строками кода: http://jackson.codehaus.org/ –

ответ

0

JsonObject как Map Interface в Java:

он хранит ключ со значением, связанным.

Пример:

JsonObject obj = new JsonObject(); 
JsonObject obj1 = new JsonObject(); 
obj1.put("obj1_key1","obj1_value1"); 
obj1.put("obj1_key2","obj1_value2"); 
obj1.put("obj1_key3","obj1_value3"); 
obj.put("obj1",obj1); 

JsonArray подобен List Interface в Java:

он хранит значения с индексом от 0 до N.

Пример:

JsonArray array = new JsonArray(); 
JsonObject obj = new JsonObject(); 
obj.put("xxx","yyy"); 
array.add(obj); 

Когда ты хотите получить строку json, помните, что когда массив начинается с [] вам нужно использовать JsonArray разобрать его, когда массив начинается с {} вам нужно использовать JSONObject

Вы можете увидеть пример here

ВАША JSON

{"matricula":"201110460","nome":"Daniel de Faria Pedro"} 

Это просто JSONObject потому что он имеет классическую ассоциацию значений ключа стиля «карта». То, что вы просто нужно сделать, это:

try { 
    URL url = new URL("http://tcc-teste.aws.af.cm/api/get/aluno/1"); 
    URLConnection connection = url.openConnection(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
    String line = "", json = ""; 
    while((line = reader.readLine())!=null){ 
     json+=line; 
    }      
    JsonObject yourObject = new JsonObject(json); 
    String matricula = yourObject.get("matricula"); 
    String nome = yourObject.get("nome"); 
    System.out.println(nome+" - "+matricula); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 
+0

извините, но вы можете дать мне пример на основе структуры данных из json из url моего вопрос? позволяет предположить, что я уже получаю данные от url. –

+0

конечно ... см. Правки pls :) – JackTurky

0

Я хотел бы сделать это:

Выяснение, что вы получите информацию из базы данных с двумя колонками, Matricula и нома, и я думаю, вы бы отправить массив поэтому я хотел бы построить массив с этим кодом

$json['test'][]=array('matricula' => $row["matricula"], 'nome' =>$row["nome"]) 

Тогда я бы разобрать эту информацию, как это при условии, что вы знаете, как получить его:

JSONObject object = new JSONObject(jsonResult); 
JSONArray test = object.getJSONArray("test"); 
for(int i = 0; i < test.length(); i++){ 
    JSONObject c = test.getJSONObject(i); 
    String matricula= c.getString("matricula"); 
    String nome = c.getString("nome"); 
    //do whatever you want with it 
} 
+0

Что вы имели в виду с этим массивом php? –

+0

Вы можете отправить больше строк из своей базы данных одновременно.Вот как вы делаете JSONArray, и после этого вы можете повторить его. –

0

Вы посмотрите на этот пример/учебник я написал на разборе JSON файлов с использованием нативного андроид JSONObject и JSONArray объект или с помощью Gson библиотеки могут:

Parsing JSON Files

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