0
我想用gson來解析包含對象數組的JSON文件。我發現了主要是「在線程異常‘’com.google.gson.JsonSyntaxException:java.io.EOFException的:輸入完第1行第2列」的錯誤在這條線的代碼:用gson解析對象的JSON數組
RecipeList[] myRecipe = gson.fromJson(theLine, RecipeList[].class);
我對於使用gson有點困惑,所以我認爲我沒有正確設置它。該數據的格式如下:
[ {
"id": 10259,
"cuisine": "greek",
"ingredients": [
"romaine lettuce",
"black olives"
] }, {
"id": 25693,
"cuisine": "southern_us",
"ingredients": [
"plain flour",
"ground pepper",
"salt",
"tomatoes",
"ground black pepper",
"thyme"
] }]
試圖讀取該代碼是:
inputStream = new FileReader("filepath\\file.json");
BufferedReader myReader = new BufferedReader(inputStream);
theLine = myReader.readLine();
Gson gson = new Gson();
RecipeList[] myRecipe = gson.fromJson(theLine, RecipeList[].class);
我RecipeList類,它被用來存儲配方中的JSON文件對象的數組(但我想這一定是錯的)
ArrayList<Recipe> recipeArray;
public RecipeList (Recipe recipObj){
recipeArray.add(recipObj);
}
我的食譜類的JSON數組在創建每個配方對象:
String recipeID;
String cuisine;
ArrayList<String> ingredients;
public Recipe (String id, String cuisine, ArrayList<String> ingredients){
this.recipeID = id;
this.cuisine = cuisine;
for (int k = 0; k < ingredients.size(); k++){
this.ingredients.add(ingredients.get(k));
}
}
我很感激任何幫助。我對使用gson讀取json文本以及如何從該數組創建單個對象感到困惑。
感謝 麗貝卡
似乎已經清除了該錯誤消息。我不知道其他人是否仍在閱讀該文件(其相當大)。鑑於它的大文件有沒有辦法處理它,而不會變成1長串? json文件中的行分隔符是什麼?它是在數組中的每個對象之後還是任意的? – marsupials
其實你必須閱讀完整的文件。文件dos的格式不會改變其JSON或其他文件。在將其解析爲GSON之前,您需要一個完整的JSON。我找不到任何幫助。但是如果你認爲佔用Java堆很多,你可以使用StringBuilder而不是String。 –
我認爲你可以從InputStream解析GSON而不是使用也可以提供幫助的String。 Gson gson = new Gson(); Reader reader = new InputStreamReader(source); SearchResponse response = gson.fromJson(reader,SearchResponse.class); 這裏的來源將是你的文件。 –