2014-11-20 4 views
0

Я пытаюсь получить значение JSON, что мой веб-сервис возвращается. Я никогда не использую JSON. Я всегда использую SOAP, но сегодня мне нужно использовать JSON, и я не знаю, как я могу получить значения.Получение значений JSON?

Мой веб-сервис возвращает этот JSON: {"cod":999,"msg":"User Data.","return":{"ID":"74","name":"FERNANDO PAIVA","email":"[email protected]"}}.

Я хочу получить электронную почту, например, как я могу это сделать?

Я пробую это.

//make a get in web service, return a String with JSON format 
public String get(String url){ 
     String s = ""; 

     try { 
      //executa o get 
      HttpGet httpGet = new HttpGet(url);   
      httpGet.addHeader("Authorization", "Basic " + getBasicAuthentication());    
      HttpResponse httpResponse = httpClient.execute(httpGet); 
      BufferedReader bReader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent())); 
      //trata o retorno do get 
      StringBuilder stringBuilder = new StringBuilder(""); 
      String line = ""; 
      String lineSeparator = System.getProperty("line.separator"); 
      while((line = bReader.readLine()) != null){ 
       stringBuilder.append(line + lineSeparator);    
      } 
      bReader.close();    
      // 
      s = stringBuilder.toString(); 
     } catch (ClientProtocolException e) {   
      e.printStackTrace(); 
     } catch (IOException e) {   
      e.printStackTrace(); 
     } 

     return s; 
    } 


//return a value of JSON 
public String getUsuarioByEmail(){ 
     String url = "mydomain.com.br/[email protected]"; 
     String response = httpClient.get(url); 
     JSONArray jArray = null; 
     String ss = ""; 
     try { 
      JSONObject obj = new JSONObject(response); 
      jArray = obj.getJSONArray("return"); 
      for(int x = 0; x < jArray.length(); x++){ 
       JSONObject e = jArray.getJSONObject(x); 
       ss = e.getString("email");    
      } 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
     return ss; 
    } 
+0

jArray = obj.getJSONArray ("return"); его также jsonobject –

+0

возможный дубликат [Как разобрать JSON в Android] (http://stackoverflow.com/questions/9605913/how-to-parse-json-in-android) –

+0

@DavidePastore не дубликат ... 2 сообщение отличное – FernandoPaiva

ответ

1

Вы можете попробовать это:

JSONObject responseObj = new JSONObject(response); 
if (responseObj.optInt("cod") == 99) // Response code validation, add your logic here 
{ 
    JSONObject returnObj = responseObj.optJSONObject("return"); 
    if (returnObj != null) 
    { 
     String email = returnObj.optString("email"); 
    } 
} 

Использование opt*** методов не бросает JSONException, unli ke get***, который выдает JSONException, если отображение не существует. Используйте соответствующий метод, в зависимости от того, что вы хотите.

0

Это все:

//return a value of JSON 
public String getUsuarioByEmail(){ 
    String url = "mydomain.com.br/[email protected]"; 
    String response = httpClient.get(url); 
    JSONArray jArray = null; 
    String ss = ""; 
    try { 
     JSONObject obj = new JSONObject(response); 
     obj = obj.getJSONObject("return"); 
     ss = obj.getString("email"); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }  
    return ss; 
} 
+0

Я не читайте свой комментарий. Это было бы невозможно для меня. :) –

1

Может быть, это то, что вы хотите:

try { 
      JSONObject obj = new JSONObject(response); 
      JSONObject returnObject = obj.getJSONObject("return"); 
      String email = returnObject.getString("email"); 
      //so on 


     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
Смежные вопросы