Поэтому у меня возникают проблемы с десериализацией некоторого JSON, у которого вложенные ArrayLists, корневой элемент десериализуется, но вложенный внутри него ArrayList (Called mTest) имеет нулевое значение. Сначала это действительный JSON.
[
{
"mRecipeName": "FirstRecipe",
"mTest": [
{
"mIngredientName": "TestIngredient1",
"mIngredientAmount": "1",
"mUnit": "tbsp"
},
{
"mIngredientName": "TestIngredient2",
"mIngredientAmount": "2",
"mUnit": "tbsp"
}
],
"mRecipeDescription": "Recipe1"
},
{
"mRecipeName": "SecondRecipe",
"mTest": [
{
"mIngredientName": "TestIngredient1",
"mIngredientAmount": "1",
"mUnit": "tbsp"
},
{
"mIngredientName": "TestIngredient2",
"mIngredientAmount": "2",
"mUnit": "tbsp"
}
],
"mRecipeDescription": "Recipe2"
}
]
Вот рецепт класса
public class Recipe {
public String mRecipeName; //This values good
public String mRecipeDescription; //This values good
public ArrayList<Test> mTest; //This returns null
}
Вот тестовый класс
public class Test {
public String mIngredientName;
public float mIngredientAmount;
public String mUnit;
}
И вот как я это называю
//Is there another way to do this? Or does this have to be done for every nested
//ArrayList? If so how?
Gson gson = new Gson();
ArrayList<Recipe> result = gson.fromJson(json, new TypeToken<ArrayList<Recipe>>() {}.getType());
Большое спасибо заранее всем, кто отвечает!
Поэтому после еще одного часа разрывания волос я понял, что "Тест" исходит из рамки JUnit, а не моего собственного тестового класса, агония! Тем не менее, что привело меня к тому, чтобы сделать тест-класс в первую очередь, было то, что он не работал и, конечно же, таинственно сейчас.