2016-03-24 3 views
-1

первый раз я даю руки на JSON Parsing. Я пытаюсь получить данные из URL-адреса и разбора его с помощью Volley.But, я не получаю данные. Мой код:Вложенный JSON Анализ URL-адреса в android с помощью Volley

  package com.example.hp.citysearchapp; 

     import android.app.DownloadManager; 
     import android.app.ProgressDialog; 
     import android.content.Intent; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     import android.util.Log; 
     import android.widget.TextView; 
     import android.widget.Toast; 

     import com.android.volley.Request; 
     import com.android.volley.Response; 
     import com.android.volley.VolleyError; 
     import com.android.volley.toolbox.JsonObjectRequest; 
     import org.json.JSONArray; 
     import org.json.JSONException; 
     import org.json.JSONObject; 
     import org.json.JSONException; 
     import org.json.JSONObject; 

     import java.io.File; 
     import java.io.FileInputStream; 
     import java.io.FileNotFoundException; 
     import java.io.IOException; 
     import java.io.InputStream; 

     public class CityDetailsActivity extends AppCompatActivity { 

      public static String url; 
      String getId; 
      TextView tv; 
      private ProgressDialog pDialog; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_city_details); 
       tv=(TextView)findViewById(R.id.textView); 
       Bundle bundle = getIntent().getExtras(); 
        getId = bundle.getString("gettingId"); 

       url="http://test.maheshwari.org/services/testwebservice.asmx/GetCity?cityId="+getId 

       JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject jsonObject) { 

         try { 

      String citycode = jsonObject.getString("CityCode");  //problem line , no string received here 
          Toast.makeText(CityDetailsActivity.this,citycode,Toast.LENGTH_SHORT).show(); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError volleyError) { 

        } 
       }); 

      } 

      private void hidePDialog() { 
       if (pDialog != null) { 
        pDialog.dismiss(); 
        pDialog = null; 
       } 
      } 
     } 

данные я получаю от URL имеет такого типа:

{ 
"CityCode": 374, 
    "State": { 
"StateCode": 29, 
"CountryCode": 1, 
"Country": { 
    "CountryCode": 1, 
    "IsdCode": "+91" 
} 
}, 
"Country": { 
"CountryCode": 1, 
"CountryName": "India", 
"IsdCode": "+91" 
}, 
"GPlaceId": "ChIJgeJXTN9KbDkRCS7yDDrG4Qw", 
"Latitude": 26.912434, 
"Longitude": 75.787271, 
"ActiveStatus": 1 
} 

Пожалуйста, помогите мне cо спаренной вложенной JSon разборе, то есть, как получить переменную «COUNTRYCODE ».

+0

Код страны, который находится внутри объекта Country внутри объекта State. – user6111220

+0

Что такое 'Log.d (« TAG », jsonObject.toString())' show, является ли ответ таким же, как вы ожидали? – Sourabh

+0

Log.d() ничего не показывает. Нет журнала для этой «TAG». @Sourabh – user6111220

ответ

0

Поскольку вам не нужно отправить объект JSON в запросе, используйте StringRequest, как определено here.

RequestQueue queue = Volley.newRequestQueue(this); 
String url ="http://<your URL>"; 

// Request a string response from the provided URL. 
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 

     //I'm basically displaying the skeleton code. You have to put try/catch clauses when required. 
     JSONObject json = new JSONObject(response); 
     Integer cityCode = json.optInt("CityCode"); 
     String cityName = json.optString("CityName"); 
     JSONObject state = json.optJSONObject("State"); 
     String stateName = state.optString("StateName"); 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     mTextView.setText("That didn't work!"); 
    } 
}); 
// Add the request to the RequestQueue. 
queue.add(stringRequest); 
+0

Как получить код CityCode, StateCode и другие параметры? – user6111220

+0

Получил ли мой ответ ответ json? –

+0

Да! Я получаю ответ через этот метод. Но как получить эти параметры? @RuchiraRandana – user6111220

0

ли что-то вроде этого

String countryCode = jsonObject.getJSONObject("Country").getInt("CountryCode"); 
0

Если я не помню, неправильно Volley лучше всего работает с струны. Вы используете double и int по всему месту, чтобы сделать вашу жизнь проще, вы можете сделать все значения в объекте JSON String.

Вот как я это делаю, а затем конвертирую из String в любое ваше приложение. См. Ниже, например.

{ 
"CityCode": "374", 
"State": { 
"StateCode": "29", 
"CountryCode": "1", 
"Country": { 
"CountryCode": "1", 
"IsdCode": "+91" 
} 
}, 
"Country": { 
"CountryCode": "1", 
"CountryName": "India", 
"IsdCode": "+91" 
}, 
"GPlaceId": "ChIJgeJXTN9KbDkRCS7yDDrG4Qw", 
"Latitude": "26.912434", 
"Longitude": "75.787271", 
"ActiveStatus": "1" 
} 
Смежные вопросы