2014-11-24 4 views
-2

Guyz Я новичок в android. Мой вопрос: как получить объект json, который находится внутри объекта. Например, как показано в моих ниже данных JSON, которые я получил из google-сайтов api, как получить open_now объект, который находится внутри opening_hours?Как получить объект JSON внутри другого объекта JSON?

"opening_hours" : { 
    "open_now" : true, 
    "weekday_text" : [] 
} 

Ниже мой Java-код:

 // Check for all possible status 
       if(status.equals("OK")){ 
        // Successfully got places details 
        if (nearPlaces.results != null) { 
         // loop through each place 
         for (Place p : nearPlaces.results) { 




          HashMap<String, String> map = new HashMap<String, String>(); 
          double rate=p.rating; 
          boolean ostatus=p.open_now; 
          String rvalue = String.valueOf(rate); 
          //Log.d("Rating",rvalue); 
          double latitude = p.geometry.location.lat; 
          double longitude = p.geometry.location.lng; 
          Location selected_location=new Location("locationA"); 
          selected_location.setLatitude(userlat); 
          selected_location.setLongitude(userlng); 
         Location near_locations=new Location("locationA"); 
          near_locations.setLatitude(latitude); 
          near_locations.setLongitude(longitude); 

         double distance=selected_location.distanceTo(near_locations); 
         double dvalue=(Math.round(distance)); 
         String dsvalue = String.valueOf(dvalue); 

       // Log.d("distance", dvalue); 

          // Place reference won't display in listview - it will be hidden 
          // Place reference is used to get "place full details" 
          map.put(KEY_REFERENCE, p.reference); 

          // Place name 
          map.put(KEY_NAME, p.name); 

          map.put(KEY_EXTRA,rvalue); 
          int price= p.price_level; 
          String pc = String.valueOf(price); 
          String plevel="Inexpensive"; 
          if(pc.equals("0")){ 
           plevel= "Inexpensive"; 
           } 
           else if(pc.equals("1")){ 
           plevel= "Inexpensive"; 

           } 
           else if(pc.equals("2")){ 
           plevel= "Moderate"; 
           } 

           else if(pc.equals("3")){ 
           plevel= "Expensive"; 
           } 
           else if(pc.equals("4")){ 
           plevel= "Very Expensive"; 
           } 


          map.put(KEY_PLEVEL,plevel); 
          String add=p.vicinity; 
          map.put(KEY_ADD, add); 


          System.out.println("open status"+String.valueOf(ostatus)); 
          // Log.d("Status",ostatus); 
          String tstat; 
          if(ostatus==false){ 
           tstat="Open"; 
          } 
          else{ 

           tstat="Open"; 
          } 
          map.put(KEY_STAT, tstat); 

         // Log.d("price level",price); 

         map.put(KEY_DISTANCE, dsvalue+" M"); 
          placesListItems.add(map); 



         } 
+0

Просьба указать код, который у вас есть. – atok

+0

, пожалуйста, прочитайте [ask]: что вы пробовали до сих пор? мы здесь не для того, чтобы сделать домашнее задание: вы должны попробовать сами и прийти сюда, если вы не можете найти решение. – mithrop

+0

Возможно, вы захотите взглянуть на библиотеку JSON Parsing, такую ​​как GSON или Jackson2. GSON может быть проще для вас. Это поможет вам. – pdegand59

ответ

2

Вы должны использовать JSONObject:

JSONObject json = new JSONObject(data); 
try{ 
    JSONObject openingHours = json.getJSONObject("opening_hours"); 
    boolean openNow = openingHours.getBoolean("open_now"); 
}catch(JSONException e){ 
    e.printStackTrace(); 
} 

Вы можете прочитать больше о JSONObject here.

1

у вас есть в Array в вашей JSONObject не в JSONObject, ваша модель должна выглядеть так:

Class Item { 
    ArrayList<String> weekday_text; 
    boolean open_now; 
} 

теперь попробуйте разобрать эту модель.

... 
// reader contains your json String that comes from server 
Gson gson = new GsonBuilder().create(); 
Item item = gson.fromJson(reader, Item.class); 
// now use your item object 
+0

Действительно плохой ответ. Прежде всего, JSONArray имеет синтаксис [{}]. Во-вторых, как ваш ответ помогает ЛЮБЫМ способом? – Carnal

+0

его вопрос неверен. он сказал, что хочет получить JSONObject внутри другого JSONObject, но в своем JSON нет внутреннего JSONObject. он просто хочет проанализировать массив и логическое значение внутри JSONObject. –

+0

Итак, вы изменили свой ответ, теперь он более ясен. Вы все же можете привести пример того, как его решить. Вы могли бы использовать Gson с предоставленным вами ответом. – Carnal

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