2013-11-26 4 views
2

Я поставил URL-адресAndroid JSON синтаксического анализа не работает

private static String url = "http://10.50.101.27:8090/AndroidApp/downloads/result.json"; 

и попытался разобрать с помощью JSON парсера в андроиде, но он не работает.

формат My Json ниже:

{"userdetails":[{"address":"Thrissur","name":"Pramoj","userid":"user001"},{"address":"Trivandrum","name":"Santhosh","userid":"user002"}]} 

Как я могу разобрать. Json parse не отвечает. Пожалуйста, помогите мне.

+1

Показать ur проанализированный код, что вы пробовали –

ответ

1

Попробуйте это:

JSONObject jObject = new JSONObject(response); 
JSONArray jArray = jObject.getJSONArray("userdetails"); 
for (i = 0; i < jArray.length();i++){ 
    JSONObject oneObject = jArray.getJSONObject(i); 
    oneObject.getString("address");//return the address 
    oneObject.getString("name");//return the name 
    oneObject.getString("userid");//return the userId 
} 
0

Прежде всего конвертировать Чет response string от вашего server к JSONObjectsince its structure is a JSONObject. А затем получить JSONArray userdetails от этого JSONObject. Loop через этот массив и получить JSONObject's в каждой отдельной позиции. После получения необходимой strings(address,name,userid) FRON что JSONObject.

Пример фрагмента кода следующим образом ..

JSONObject obj = new JSONObject(response); 

JSONArray jArr = obj.getJSONArray("userdetails"); 

for(int i=0; i < jArr.length(); i++) 
{ 
     JSONObject jObj = jArr.getJSONObject(i); 

     Log.v("address",jObj.getString("address").trim()); 

     Log.v("name",jObj.getString("name").trim()); 

     Log.v("userid",jObj.getString("userid").trim()); 
} 
0
public void parseJson(String jsonString) 
{ 
    try 
    { 
     JSONObject json = new JSONObject(jsonString); 
     JSONArray userdetails = json.getJSONArray("userdetails"); 
     for (int i=0; i<userdetails.length(); i++) 
     { 
      JSONObject user = userdetails.getJSONObject(i); 
      String address = user.getString("address"); 
      String name = user.getString("name"); 
      String userid = user.getString("userid"); 
     } 
    } 
    catch (Exception e) {} 
} 
+0

Проблема возникла из-за того, что мой IP-адрес не является глобальным! –

0

JSONParser класс:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.util.Log; 

public class JSONParser { 

    static InputStream is = null; 
    static JSONObject jObj = null; 
    static String json = ""; 

    // constructor 
    public JSONParser() { 

    } 

    public JSONObject getJSONFromUrl(String url) { 

     // Making HTTP request 
     try { 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new HttpPost(url); 

      HttpResponse httpResponse = httpClient.execute(httpPost); 
      HttpEntity httpEntity = httpResponse.getEntity(); 
      is = httpEntity.getContent();   

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      json = sb.toString(); 
     } catch (Exception e) { 
      Log.e("Buffer Error", "Error converting result " + e.toString()); 
     } 

     // try parse the string to a JSON object 
     try { 
      jObj = new JSONObject(json); 
     } catch (JSONException e) { 
      Log.e("JSON Parser", "Error parsing data " + e.toString()); 
     } 

     // return JSON String 
     return jObj; 

    } 
} 

И код парсинга:

JSONParser jParser = new JSONParser(); 

// getting JSON string from URL 
JSONObject json = jParser.getJSONFromUrl(url); 

try { 
    // Getting Array of userdetails 
    userdetails = json.getJSONArray("userdetails"); 

    // looping through All userdetails 
    for(int i = 0; i < userdetails.length(); i++){ 
     JSONObject c = userdetails.getJSONObject(i); 

     // Storing each json item in variable 
     String id = c.getString("userid"); 
     String name = c.getString("name"); 
     String address = c.getString(address); 
    } 
} catch (JSONException e) { 
    e.printStackTrace(); 
0

URL = "Ваш JSON URL"

public class Uploadfilechecking extends AsyncTask<String, String, String> { 
    Activity mcontext; 
    String username, password; 
    boolean checkbox_value; 

    private ProgressDialog progressDialog; 
    private String JSONResp; 
    StringBuilder sb = new StringBuilder(); 
    String Success_msg; 

    private JSONArray tmp; 

    private View progressView; 
    private Object fileUploadManager; 
    protected WeakReference<Context> context; 

    @Override 
    protected String doInBackground(String... params) { 
     // TODO Auto-generated method stub 

     try { 

      URL u = new URL(url); 

      HttpURLConnection conn = (HttpURLConnection) u.openConnection(); 
      conn.setRequestMethod("GET"); 

      conn.connect(); 
      InputStream is = conn.getInputStream(); 

      // Read the stream 
      byte[] b = new byte[1024]; 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

      while (is.read(b) != -1) 
       baos.write(b); 

      JSONResp = new String(baos.toByteArray()); 

     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 

     return JSONResp; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     System.out.println("filecheckresult" + result); 
     try { 

      JSONObject obj = new JSONObject(result); 
      JSONArray array=obj.getJSONArray("userdetails"); 


       for (int i = 0; i < array.length(); i++) { 
        JSONObject actor = array.getJSONObject(i); 
        System.out.println(actor.getString("address")); 
      } 


     }catch(JSONException ex) 
     { 
      ex.printStackTrace(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 
0
JSONObject jObj = new JSONObject(response); 
JSONArray arr = jObj.getJSONArray("userdetails"); 
for (int i = 0; i < arr .length();i++){ 
JSONObject innerobject = arr .getJSONObject(i); 
innerobject.getString("address"); 
innerobject.getString("name"); 
innerobject.getString("userid"); 
} 
0

Создать класс и геттер/сеттер для UserDetails

public class userdetails { 
     private String name, address, userid; 
    } 

Создать класс раковине

 public class Sink { 
      List<userdetails> userdetails; 
     } 

вызова, что ответ на тонуть

List<userdetails>user_details= new ArrayList<userdetails>(); 
    SinkItem datas = new Gson().fromJson(response, SinkItem.class); 
    user_details= datas.userdetails; 

Импорт библиотеки Gson в папку libs

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