GSON из JSON возвращается NULL - PullRequest
0 голосов
/ 18 декабря 2018

Я делаю мобильное приложение для Android в Android Studio 3.1.4 и в настоящее время пытаюсь использовать GSON.fromjson для получения возвращенных данных в объект.Я создал класс для GSON, но я не уверен, правильно ли это.Я чувствую, что это может быть проблемой, но я не знаю, где я иду не так.

Вот класс

package com.example.sam.food_u_cation;

import java.util.List;

public class apiDataClass {

String q;
int from;
int to;
params params;
List<hits> hits;

public class params {
    List<String> sane;
    List<String> q;
    List<String> app_key;
    List<String> from;
    List<String> to;
    List<String> diet;
    List<String> health;
    List<String> calories;
    List<String> app_id;
    boolean more;
    int count;
}

public class hits {

    recipes recipes;
    public class recipes{

        recipe recipe;
        transient boolean bookmarked;
        transient boolean bought;

        public class recipe {
            String uri;
            String label;
            String image;
            String source;
            String url;
            String shareAs;
            double yield;
            List<String> dietLabels;
            List<String> healthLabels;
            transient List<String> cautions;
            transient List<String> ingredientLines;
            List<ingredients> ingredients;
            transient double calories;
            double totalWeight;
            double totalTime;
            totalNutrients totalNutrients;
            transient totalDaily totalDaily;
            transient List<digestInfo> digestInfo;

            public class ingredients {
                String label;
                double weight;
            }

            public class totalNutrients {
                kcal kcal;
                fat fat;
                transient fasat fasat;
                transient fatrn fatrn;
                transient fams fams;
                transient fapu fapu;
                carbs carbs;
                transient fibtg fibtg;
                transient sugar sugar;
                protein protein;
                transient chole chole;
                transient na na;
                transient ca ca;
                transient mg mg;
                transient k k;
                transient fe fe;
                transient zn zn;
                transient p p;
                transient vita_rae vita_rae;
                transient vitc vitc;
                transient thia thia;
                transient ribf ribf;
                transient nia nia;
                transient vitb6a vitb6a;
                transient foldfe foldfe;
                transient folfd folfd;
                transient vitb12 vitb12;
                transient vitd vidd;
                transient tocpha tocpha;
                transient vitk1 vitk1;

                public class kcal {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fat {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fasat {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fatrn {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fams {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fapu {
                    String label;
                    double quantity;
                    String unit;
                }

                public class carbs {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fibtg {
                    String label;
                    double quantity;
                    String unit;
                }

                public class sugar {
                    String label;
                    double quantity;
                    String unit;
                }

                public class protein {
                    String label;
                    double quantity;
                    String unit;
                }

                public class chole {
                    String label;
                    double quantity;
                    String unit;
                }

                public class na {
                    String label;
                    double quantity;
                    String unit;
                }

                public class ca {
                    String label;
                    double quantity;
                    String unit;
                }

                public class mg {
                    String label;
                    double quantity;
                    String unit;
                }

                public class k {
                    String label;
                    double quantity;
                    String unit;
                }

                public class fe {
                    String label;
                    double quantity;
                    String unit;
                }

                public class zn {
                    String label;
                    double quantity;
                    String unit;
                }

                public class p {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vita_rae {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vitc {
                    String label;
                    double quantity;
                    String unit;
                }

                public class thia {
                    String label;
                    double quantity;
                    String unit;
                }

                public class ribf {
                    String label;
                    double quantity;
                    String unit;
                }

                public class nia {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vitb6a {
                    String label;
                    double quantity;
                    String unit;
                }

                public class foldfe {
                    String label;
                    double quantity;
                    String unit;
                }

                public class folfd {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vitb12 {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vitd {
                    String label;
                    double quantity;
                    String unit;
                }

                public class tocpha {
                    String label;
                    double quantity;
                    String unit;
                }

                public class vitk1 {
                    String label;
                    double quantity;
                    String unit;
                }
            }

            public class totalDaily extends totalNutrients {
            }

            public class digestInfo {
                String label;
                String tag;
                String schemaOrgTag;
                double total;
                boolean hasRDI;
                double daily;
                String unit;
                List<digestInfo2> digestInfo2;

                public class digestInfo2 {
                    String label;
                    String tag;
                    String schemaOrgTag;
                    double total;
                    boolean hasRDI;
                    double daily;
                    String unit;
                }
            }
        }


    }

}
}

Вот данные json, которые я получаю

{
  "q" : "",
  "from" : 0,
  "to" : 1,
  "params" : {
    "sane" : [ ],
    "q" : [ "" ],
    "app_key" : [ "{PRIVACY}" ],
    "from" : [ "0" ],
    "to" : [ "1" ],
    "diet" : [ "low-carb" ],
    "app_id" : [ "{PRIVACY}" ]
  },
  "more" : true,
  "count" : 227806,
  "hits" : [ {
    "recipe" : {
      "uri" : "http://www.edamam.com/ontologies/edamam.owl#recipe_9b5945e03f05acbf9d69625138385408",
      "label" : "Pressure-Cooker Octopus Recipe",
      "image" : "https://www.edamam.com/web-img/c69/c6922ad323db66d90b7d2c8d3c9cd3c4.jpg",
      "source" : "Serious Eats",
      "url" : "http://www.seriouseats.com/recipes/2016/06/pressure-cooker-octopus-recipe.html",
      "shareAs" : "http://www.edamam.com/recipe/pressure-cooker-octopus-recipe-9b5945e03f05acbf9d69625138385408/-/low-carb",
      "yield" : 6.0,
      "dietLabels" : [ "High-Protein", "Low-Fat", "Low-Carb" ],
      "healthLabels" : [ "Sugar-Conscious", "Peanut-Free", "Tree-Nut-Free", "Alcohol-Free" ],
      "cautions" : [ ],
      "ingredientLines" : [ "1 (2 1/2-pound; 1kg) whole octopus, rinsed well (including inside head cavity)", "Kosher salt" ],
      "ingredients" : [ {
        "text" : "1 (2 1/2-pound; 1kg) whole octopus, rinsed well (including inside head cavity)",
        "weight" : 1359.0
      }, {
        "text" : "Kosher salt",
        "weight" : 8.154
      } ],
      "calories" : 1114.3799999999999,
      "totalWeight" : 1359.0893423809277,
      "totalTime" : 25.0,
      "totalNutrients" : {
        "ENERC_KCAL" : {
          "label" : "Energy",
          "quantity" : 1114.3799999999999,
          "unit" : "kcal"
        },
        "FAT" : {
          "label" : "Fat",
          "quantity" : 14.1336,
          "unit" : "g"
        },
        "FASAT" : {
          "label" : "Saturated",
          "quantity" : 3.08493,
          "unit" : "g"
        },
        "FAMS" : {
          "label" : "Monounsaturated",
          "quantity" : 2.20158,
          "unit" : "g"
        },
        "FAPU" : {
          "label" : "Polyunsaturated",
          "quantity" : 3.24801,
          "unit" : "g"
        },
        "CHOCDF" : {
          "label" : "Carbs",
          "quantity" : 29.898000000000003,
          "unit" : "g"
        },
        "PROCNT" : {
          "label" : "Protein",
          "quantity" : 202.6269,
          "unit" : "g"
        },
        "CHOLE" : {
          "label" : "Cholesterol",
          "quantity" : 652.3199999999999,
          "unit" : "mg"
        },
        "NA" : {
          "label" : "Sodium",
          "quantity" : 3160.32732,
          "unit" : "mg"
        },
        "CA" : {
          "label" : "Calcium",
          "quantity" : 720.2914421714227,
          "unit" : "mg"
        },
        "MG" : {
          "label" : "Magnesium",
          "quantity" : 407.70089342380925,
          "unit" : "mg"
        },
        "K" : {
          "label" : "Potassium",
          "quantity" : 4756.5071473904745,
          "unit" : "mg"
        },
        "FE" : {
          "label" : "Iron",
          "quantity" : 72.02729482985707,
          "unit" : "mg"
        },
        "ZN" : {
          "label" : "Zinc",
          "quantity" : 22.831289342380927,
          "unit" : "mg"
        },
        "P" : {
          "label" : "Phosphorus",
          "quantity" : 2527.74,
          "unit" : "mg"
        },
        "VITA_RAE" : {
          "label" : "Vitamin A",
          "quantity" : 611.55,
          "unit" : "µg"
        },
        "VITC" : {
          "label" : "Vitamin C",
          "quantity" : 67.95,
          "unit" : "mg"
        },
        "THIA" : {
          "label" : "Thiamin (B1)",
          "quantity" : 0.4077,
          "unit" : "mg"
        },
        "RIBF" : {
          "label" : "Riboflavin (B2)",
          "quantity" : 0.5436,
          "unit" : "mg"
        },
        "NIA" : {
          "label" : "Niacin (B3)",
          "quantity" : 28.539,
          "unit" : "mg"
        },
        "VITB6A" : {
          "label" : "Vitamin B6",
          "quantity" : 4.892399999999999,
          "unit" : "mg"
        },
        "FOLDFE" : {
          "label" : "Folate equivalent (total)",
          "quantity" : 217.44,
          "unit" : "µg"
        },
        "FOLFD" : {
          "label" : "Folate (food)",
          "quantity" : 217.44,
          "unit" : "µg"
        },
        "VITB12" : {
          "label" : "Vitamin B12",
          "quantity" : 271.8,
          "unit" : "µg"
        },
        "TOCPHA" : {
          "label" : "Vitamin E",
          "quantity" : 16.308,
          "unit" : "mg"
        },
        "VITK1" : {
          "label" : "Vitamin K",
          "quantity" : 1.359,
          "unit" : "µg"
        }
      },
      "totalDaily" : {
        "ENERC_KCAL" : {
          "label" : "Energy",
          "quantity" : 55.718999999999994,
          "unit" : "%"
        },
        "FAT" : {
          "label" : "Fat",
          "quantity" : 21.744,
          "unit" : "%"
        },
        "FASAT" : {
          "label" : "Saturated",
          "quantity" : 15.42465,
          "unit" : "%"
        },
        "CHOCDF" : {
          "label" : "Carbs",
          "quantity" : 9.966000000000001,
          "unit" : "%"
        },
        "PROCNT" : {
          "label" : "Protein",
          "quantity" : 405.25380000000007,
          "unit" : "%"
        },
        "CHOLE" : {
          "label" : "Cholesterol",
          "quantity" : 217.43999999999997,
          "unit" : "%"
        },
        "NA" : {
          "label" : "Sodium",
          "quantity" : 131.68030499999998,
          "unit" : "%"
        },
        "CA" : {
          "label" : "Calcium",
          "quantity" : 72.02914421714227,
          "unit" : "%"
        },
        "MG" : {
          "label" : "Magnesium",
          "quantity" : 97.07164129138316,
          "unit" : "%"
        },
        "K" : {
          "label" : "Potassium",
          "quantity" : 101.20227973171222,
          "unit" : "%"
        },
        "FE" : {
          "label" : "Iron",
          "quantity" : 400.1516379436504,
          "unit" : "%"
        },
        "ZN" : {
          "label" : "Zinc",
          "quantity" : 207.5571758398266,
          "unit" : "%"
        },
        "P" : {
          "label" : "Phosphorus",
          "quantity" : 361.10571428571427,
          "unit" : "%"
        },
        "VITA_RAE" : {
          "label" : "Vitamin A",
          "quantity" : 67.94999999999999,
          "unit" : "%"
        },
        "VITC" : {
          "label" : "Vitamin C",
          "quantity" : 75.5,
          "unit" : "%"
        },
        "THIA" : {
          "label" : "Thiamin (B1)",
          "quantity" : 33.975,
          "unit" : "%"
        },
        "RIBF" : {
          "label" : "Riboflavin (B2)",
          "quantity" : 41.815384615384616,
          "unit" : "%"
        },
        "NIA" : {
          "label" : "Niacin (B3)",
          "quantity" : 178.36875,
          "unit" : "%"
        },
        "VITB6A" : {
          "label" : "Vitamin B6",
          "quantity" : 376.3384615384615,
          "unit" : "%"
        },
        "FOLDFE" : {
          "label" : "Folate equivalent (total)",
          "quantity" : 54.36,
          "unit" : "%"
        },
        "VITB12" : {
          "label" : "Vitamin B12",
          "quantity" : 11325.0,
          "unit" : "%"
        },
        "TOCPHA" : {
          "label" : "Vitamin E",
          "quantity" : 108.72,
          "unit" : "%"
        },
        "VITK1" : {
          "label" : "Vitamin K",
          "quantity" : 1.1325,
          "unit" : "%"
        }
      },
      "digest" : [ {
        "label" : "Fat",
        "tag" : "FAT",
        "schemaOrgTag" : "fatContent",
        "total" : 14.1336,
        "hasRDI" : true,
        "daily" : 21.744,
        "unit" : "g",
        "sub" : [ {
          "label" : "Saturated",
          "tag" : "FASAT",
          "schemaOrgTag" : "saturatedFatContent",
          "total" : 3.08493,
          "hasRDI" : true,
          "daily" : 15.42465,
          "unit" : "g"
        }, {
          "label" : "Trans",
          "tag" : "FATRN",
          "schemaOrgTag" : "transFatContent",
          "total" : 0.0,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        }, {
          "label" : "Monounsaturated",
          "tag" : "FAMS",
          "schemaOrgTag" : null,
          "total" : 2.20158,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        }, {
          "label" : "Polyunsaturated",
          "tag" : "FAPU",
          "schemaOrgTag" : null,
          "total" : 3.24801,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        } ]
      }, {
        "label" : "Carbs",
        "tag" : "CHOCDF",
        "schemaOrgTag" : "carbohydrateContent",
        "total" : 29.898000000000003,
        "hasRDI" : true,
        "daily" : 9.966000000000001,
        "unit" : "g",
        "sub" : [ {
          "label" : "Carbs (net)",
          "tag" : "CHOCDF.net",
          "schemaOrgTag" : null,
          "total" : 29.898000000000003,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        }, {
          "label" : "Fiber",
          "tag" : "FIBTG",
          "schemaOrgTag" : "fiberContent",
          "total" : 0.0,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        }, {
          "label" : "Sugars",
          "tag" : "SUGAR",
          "schemaOrgTag" : "sugarContent",
          "total" : 0.0,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        }, {
          "label" : "Sugars, added",
          "tag" : "SUGAR.added",
          "schemaOrgTag" : null,
          "total" : 0.0,
          "hasRDI" : false,
          "daily" : 0.0,
          "unit" : "g"
        } ]
      }, {
        "label" : "Protein",
        "tag" : "PROCNT",
        "schemaOrgTag" : "proteinContent",
        "total" : 202.6269,
        "hasRDI" : true,
        "daily" : 405.25380000000007,
        "unit" : "g"
      }, {
        "label" : "Cholesterol",
        "tag" : "CHOLE",
        "schemaOrgTag" : "cholesterolContent",
        "total" : 652.3199999999999,
        "hasRDI" : true,
        "daily" : 217.43999999999997,
        "unit" : "mg"
      }, {
        "label" : "Sodium",
        "tag" : "NA",
        "schemaOrgTag" : "sodiumContent",
        "total" : 3160.32732,
        "hasRDI" : true,
        "daily" : 131.68030499999998,
        "unit" : "mg"
      }, {
        "label" : "Calcium",
        "tag" : "CA",
        "schemaOrgTag" : null,
        "total" : 720.2914421714227,
        "hasRDI" : true,
        "daily" : 72.02914421714227,
        "unit" : "mg"
      }, {
        "label" : "Magnesium",
        "tag" : "MG",
        "schemaOrgTag" : null,
        "total" : 407.70089342380925,
        "hasRDI" : true,
        "daily" : 97.07164129138316,
        "unit" : "mg"
      }, {
        "label" : "Potassium",
        "tag" : "K",
        "schemaOrgTag" : null,
        "total" : 4756.5071473904745,
        "hasRDI" : true,
        "daily" : 101.20227973171222,
        "unit" : "mg"
      }, {
        "label" : "Iron",
        "tag" : "FE",
        "schemaOrgTag" : null,
        "total" : 72.02729482985707,
        "hasRDI" : true,
        "daily" : 400.1516379436504,
        "unit" : "mg"
      }, {
        "label" : "Zinc",
        "tag" : "ZN",
        "schemaOrgTag" : null,
        "total" : 22.831289342380927,
        "hasRDI" : true,
        "daily" : 207.5571758398266,
        "unit" : "mg"
      }, {
        "label" : "Phosphorus",
        "tag" : "P",
        "schemaOrgTag" : null,
        "total" : 2527.74,
        "hasRDI" : true,
        "daily" : 361.10571428571427,
        "unit" : "mg"
      }, {
        "label" : "Vitamin A",
        "tag" : "VITA_RAE",
        "schemaOrgTag" : null,
        "total" : 611.55,
        "hasRDI" : true,
        "daily" : 67.94999999999999,
        "unit" : "µg"
      }, {
        "label" : "Vitamin C",
        "tag" : "VITC",
        "schemaOrgTag" : null,
        "total" : 67.95,
        "hasRDI" : true,
        "daily" : 75.5,
        "unit" : "mg"
      }, {
        "label" : "Thiamin (B1)",
        "tag" : "THIA",
        "schemaOrgTag" : null,
        "total" : 0.4077,
        "hasRDI" : true,
        "daily" : 33.975,
        "unit" : "mg"
      }, {
        "label" : "Riboflavin (B2)",
        "tag" : "RIBF",
        "schemaOrgTag" : null,
        "total" : 0.5436,
        "hasRDI" : true,
        "daily" : 41.815384615384616,
        "unit" : "mg"
      }, {
        "label" : "Niacin (B3)",
        "tag" : "NIA",
        "schemaOrgTag" : null,
        "total" : 28.539,
        "hasRDI" : true,
        "daily" : 178.36875,
        "unit" : "mg"
      }, {
        "label" : "Vitamin B6",
        "tag" : "VITB6A",
        "schemaOrgTag" : null,
        "total" : 4.892399999999999,
        "hasRDI" : true,
        "daily" : 376.3384615384615,
        "unit" : "mg"
      }, {
        "label" : "Folate equivalent (total)",
        "tag" : "FOLDFE",
        "schemaOrgTag" : null,
        "total" : 217.44,
        "hasRDI" : true,
        "daily" : 54.36,
        "unit" : "µg"
      }, {
        "label" : "Folate (food)",
        "tag" : "FOLFD",
        "schemaOrgTag" : null,
        "total" : 217.44,
        "hasRDI" : false,
        "daily" : 0.0,
        "unit" : "µg"
      }, {
        "label" : "Folic acid",
        "tag" : "FOLAC",
        "schemaOrgTag" : null,
        "total" : 0.0,
        "hasRDI" : false,
        "daily" : 0.0,
        "unit" : "µg"
      }, {
        "label" : "Vitamin B12",
        "tag" : "VITB12",
        "schemaOrgTag" : null,
        "total" : 271.8,
        "hasRDI" : true,
        "daily" : 11325.0,
        "unit" : "µg"
      }, {
        "label" : "Vitamin D",
        "tag" : "VITD",
        "schemaOrgTag" : null,
        "total" : 0.0,
        "hasRDI" : false,
        "daily" : 0.0,
        "unit" : "µg"
      }, {
        "label" : "Vitamin E",
        "tag" : "TOCPHA",
        "schemaOrgTag" : null,
        "total" : 16.308,
        "hasRDI" : true,
        "daily" : 108.72,
        "unit" : "mg"
      }, {
        "label" : "Vitamin K",
        "tag" : "VITK1",
        "schemaOrgTag" : null,
        "total" : 1.359,
        "hasRDI" : true,
        "daily" : 1.1325,
        "unit" : "µg"
      } ]
    },
    "bookmarked" : false,
    "bought" : false
  } ]
}

и вот вызов GSON

package com.example.sam.food_u_cation;

import android.content.Intent;
import android.os.AsyncTask;
import android.util.Log;

import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.simple.parser.JSONParser;

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Scanner;

public class getData extends AsyncTask<URL,Void,Void> {

private String inputData;

apiDataClass apiData;

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);

    apiData = new apiDataClass();
    Gson gson = new Gson();
    apiData = gson.fromJson(inputData, apiDataClass.class);

displayAPIDataPage.field.setText(apiData.hits.get(0).recipes.recipe.label);
}

protected Void doInBackground(URL... url){


    try {

        HttpURLConnection connect = (HttpURLConnection) 
url[0].openConnection();

        connect.setRequestMethod("GET");

        connect.connect();

        int code = connect.getResponseCode();

        if(code != 200){
            throw new RuntimeException("HttpResponseCode: " + code);
        }else{
            Scanner scanner = new Scanner(url[0].openStream());
            while(scanner.hasNext()){
            inputData += scanner.nextLine();
        }
        scanner.close();
    }
}
    catch(Exception ex){
    Log.d("GetAPIData",ex.toString());
}
return null;
}

}

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

@ Сэм Николс, рассмотрите возможность использования того же имени объекта, что и Json Objects в Json Response, иначе используйте аннотацию @SerializedName (), которая отобразит ваш объект JsonResponse в соответствующий объект Java.я думаю, что проблема заключается в отображении здесь, поскольку вы можете использовать другое имя объекта Java, чем то, которое вы получаете через ответ json.

0 голосов
/ 18 декабря 2018

Извините, ребята, это была глупая ошибка, то, как я читал данные JSON, было неверным, из-за чего gson не работал.исправил это

if (code != 200) {
            throw new RuntimeException("HttpResponseCode: " + code);
        } else {
            BufferedReader br = new BufferedReader(new 
            InputStreamReader(connect.getInputStream()));

            StringBuilder sb = new StringBuilder();
            String line;

            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            br.close();

            try {
                inputData = sb.toString();
            } catch (Exception e) {

            }
        }

вместо

if(code != 200){
        throw new RuntimeException("HttpResponseCode: " + code);
    }else{
        Scanner scanner = new Scanner(url[0].openStream());
        while(scanner.hasNext()){
        inputData += scanner.nextLine();
    }
    scanner.close();
0 голосов
/ 18 декабря 2018

Это слишком долго.Если объект имеет общий характер, использование gson может не работать.TypeToken может справиться с этим.Тип type = new TypeToken> () {}. GetType ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...