私は空き時間に構築しているアプリケーションを持っており、REST API に接続しています。正常に動作していますが、これが JSON エラーをチェックする「適切な」方法であるかどうかはわかりません。JSON のエラーをチェックする最も効率的で信頼できる方法を探しています。私は JSON の理解を深めようとしていますが、そうでない場合は最善の方法でやっているとは思いたくありません。これは、JSON を介して約 20 項目の応答を処理するための最良の方法ですか?
更新 一部の応答には結果がない可能性があることを忘れていました。それが、私がこの質問をしている理由でもあります。
スニペットこれは通常どのように行われますか?
if (serving.isNull("calories")) {
mCalories = null;
} else {
mCalories = serving.getString("calories");
}
コードとその応答の一部から、ほとんどの文字列を削除しました。
private void getFood(final long id) {
new AsyncTask<String, String, String>() {
@Override
protected String doInBackground(String... arg0) {
JSONObject foodGet = mFatSecretGet.getFood(id);
try {
if (foodGet != null) {
mFoodName = foodGet.getString("food_name");
JSONObject servings = foodGet.getJSONObject("servings");
Object intervention = servings.get("serving");
if (intervention instanceof JSONObject) {
arrayOrJson = "object";
JSONObject serving = servings.getJSONObject("serving");
if (serving.isNull("calories")) {
mCalories = null;
} else {
mCalories = serving.getString("calories");
}
if (serving.isNull("fat")) {
mFat = null;
} else {
mFat = serving.getString("fat");
}
if (serving.isNull("carbohydrate")) {
mCarbohydrates = null;
} else {
mCarbohydrates = serving.getString("carbohydrate");
}
if (serving.isNull("protein")) {
mProtein = null;
} else {
mProtein = serving.getString("protein");
}
/**
* Removed Data
*/
} else if (intervention instanceof JSONArray) {
mItem.clear();
JSONArray serving = servings.getJSONArray("serving");
for (int i = 0; i < serving.length(); i++) {
JSONObject ser = serving.getJSONObject(i);
String DifferentServings = ser.getString("serving_description");
mItem.add(DifferentServings);
}
JSONObject newServing = serving.getJSONObject(mLastSpinnerPosition); // Returning the spinner position.
if (newServing.isNull("serving_description")) {
mServingDescription = null;
} else {
mServingDescription = newServing.getString("serving_description");
}
if (newServing.isNull("calories")) {
mCalories = null;
} else {
mCalories = newServing.getString("calories");
}
if (newServing.isNull("fat")) {
mFat = null;
} else {
mFat = newServing.getString("fat");
}
if (newServing.isNull("carbohydrate")) {
mCarbohydrates = null;
} else {
mCarbohydrates = newServing.getString("carbohydrate");
}
if (newServing.isNull("protein")) {
mProtein = null;
} else {
mProtein = newServing.getString("protein");
}
/**
* Removed Data
*/
}
}
} catch (JSONException exception) {
exception.printStackTrace();
return "Error";
}
return "";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
servingAdapter.notifyDataSetChanged();
setItems();
saveMeal();
}
}.execute();
}