たとえば、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.