3

たとえば、Json配列で異なる文字列タグを取得することがあります

 {
 "html_attributions": [],
 "results": [
     {

         "name": "V & P FOX LOCKSMITHS",
         "opening_hours": {
             "open_now": true
         },
         "vicinity": "91A Saint Martin's Lane, London"
     },
     {
         "id": "c680cf44d85a15cdc727e0101f8531db70c0cf1c",            
           "name": "London United Kingdom",
         "vicinity": "41-43 Wardour Street, London" 

        // Here i do not get open hours tag, what should do when we 
         //not get json parsing in synchrozied manner 

     },
     {

         "name": "Timpson",
         "opening_hours": {
             "open_now": true
         },
         "vicinity": "40 Villiers Street, Charing Cross"
     }] }

特定の場所を英国として使用した場合、解析結果は場所によって異なります。解析で 3 つの属性を取得しました。名前、都市、営業時間。

しかし、場所を英国から米国に変更すると、Name と City の 2 つの属性しか取得できませんでした。営業時間はわかりませんが、コードですべての場所に 3 つの変数を使用しました。しかし、Web サービスから値を 2 つだけ取得すると、解析でエラーが発生しました。

私のJavaコードは

 JSONObject json = jParser.getJSONFromUrl(url);  
 try {  
    // Getting Array of Contacts  
     towLogSmithJsonArray = json.getJSONArray(TAG_RESULTS_LOG_SMITH);  
    if(towLogSmithJsonArray!=null)  
    {  
            // looping through All Contacts  
        for(int i = 0; i < towLogSmithJsonArray.length(); i++)  
               {  
                    JSONObject d = towLogSmithJsonArray.getJSONObject(i);  
                    // Storing each json item in variable  
                    String openNOW="";  

                    String nameCarRental = d.getString(TAG_NAME_LOG_SMITH);             
             String cityAddress = d.getString(TAG_CITY_LOCATION_LOG);  

             // JSONObject phone = d.getJSONObject(TAG_OPENING_HOURS);  
             //    openNOW = phone.getString(TAG_OPEN_NOW);         

             Log.e("nameCarREntal", nameCarRental);
             Log.e("CityAddress",cityAddress);
             //Log.e("OPenNow",openNOW);

             // creating new HashMap
             HashMap<String, String> mapLockSmith = new HashMap<String, String>();              
             // adding each child node to HashMap key => value

             mapLockSmith.put(TAG_NAME_LOG_SMITH, nameCarRental);
             mapLockSmith.put(TAG_OPEN_NOW, openNOW);
             mapLockSmith.put(TAG_CITY_LOCATION_LOG, cityAddress);

             // adding HashList to ArrayList
             towLogSmithList.add(mapLockSmith);
             }
          }
         else
                {  
            Log.d("LOck Smith parsing NUll: ", "null");  
            Toast.makeText(LockSmith.this,"There is not data for particular location",Toast.LENGTH_LONG).show();  
        }    
        }catch (JSONException e) {    
    e.printStackTrace();  
 }  

「openNOW」タグに何も取得できない場合、どのような変更が必要ですか

3 つの方法

 -OpenNow: True
 -OPenNow: False
 -“opening_hours” Tag  is not available in Pasring array  code.
4

1 に答える 1

2

"opening_hours"andがオブジェクトに表示されているかどうかを確認"open_now"します。

String openNOW = "";
if(d.has("opening_hours"){
    JSONObject json2 = d.getJSONObject("opening_hours");
    if(json2.has("open_now"){
        openNOW=json2.getString("open_now");
    }
}
于 2013-01-28T11:22:59.433 に答える