2015-04-08 5 views
0

Я пытаюсь разобрать json с URL-адреса. Мне удалось разобрать один URL-адрес, поэтому я скопировал json-файл и загрузил его в свой домен (diffr url), но теперь я не могу получить данные из json. Я не искал код в приложении для Android, кроме URL-адреса. Пожалуйста, помогите.parse json данные из url с помощью приложения android

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
    .detectAll() 
    .penaltyLog() 
    .build(); 
StrictMode.setThreadPolicy(policy); 

TextView tv=(TextView)findViewById(R.id.textView1); 

    TextView wid = (TextView) findViewById(R.id.id); 
    TextView name = (TextView) findViewById(R.id.title); 
    TextView url = (TextView) findViewById(R.id.description); 


    JSONObject json = null; 
    String str = ""; 
    HttpResponse response; 
    HttpClient myClient = new DefaultHttpClient(); 
    HttpPost myConnection = new HttpPost("My Url~"); 

    try { 
     response = myClient.execute(myConnection); 
     str = EntityUtils.toString(response.getEntity(), "UTF-8"); 

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

    if(1>0) 
     tv.setText(str); 
    try{ 
     JSONArray jArray = new JSONArray(str); 
     json = jArray.getJSONObject(0); 


     wid.setText(json.getString("id")); 
     name.setText(json.getString("title")); 
     url.setText(json.getString("description")); 


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

когда я печатаю ул я вижу весь текст из файла JSON, но, когда я пытаюсь использовать getJSONObject я не получаю данные из файла JSON.

+0

Вы получите ответ JSON наверняка? –

+1

str = EntityUtils.toString (response.getEntity(), "UTF-8"); – Zachinio

+0

Невозможно ответить на ваш вопрос, не видя свой код и данные JSON, которые вы пытаетесь проанализировать. – Egor

ответ

1

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

  1. Put Your JSON here (или использовать подобное отображение JSON2POJO), чтобы создать объект из JSON
  2. Создать новый класс Java с выхода стадии 1 (MyClass.java)
  3. После того, как ваш JSON будет загружен в вашу переменную «str», используйте, например, GSON, чтобы десериализировать его:

    Gson gson = new Gson();

    MyClass obj = gson.fromJson (str, MyClass.class);

  4. Затем вы можете использовать:

    obj.getWhatEverYouWant();

для доступа к вашим данным. Это намного лучше, чем разобрать JSON вручную.

Также вы должны рассмотреть возможность использования RETROFIT или OKHTTP для отправки ваших HTTP-запросов.