Java Can';不读取json文件
下面是我读取json文件的方法Java Can';不读取json文件,java,android,json,nullpointerexception,Java,Android,Json,Nullpointerexception,下面是我读取json文件的方法 private void LoadTabaksFromJson() { InputStream raw = mContext.getResources().openRawResource(R.raw.tabaks); Reader reader = new BufferedReader(new InputStreamReader(raw)); ListOfTabaks listOfTodos = new Gson().fromJson
private void LoadTabaksFromJson() {
InputStream raw = mContext.getResources().openRawResource(R.raw.tabaks);
Reader reader = new BufferedReader(new InputStreamReader(raw));
ListOfTabaks listOfTodos = new Gson().fromJson(reader, ListOfTabaks.class);
List<Tabak> todoList = listOfTodos.getTodoArrayList();
for (Tabak item: todoList){
mDataBase.insert(TabakTable.NAME,null,getContentValues(item));
}
}
public class ListOfTabaks {
protected ArrayList<Tabak> tabakArrayList;
public ArrayList<Tabak> getTodoArrayList(){
return tabakArrayList;
}
}
请将json文件放在资产文件夹中 使用AsyncTask防止类似ANR的情况
onBackground(){
String json = null;
try {
InputStream stream = activity.getAssets().open("ur_json_file_in_assets_folder.json");
int size = stream.available();
byte[] buffer = new byte[size];
stream.read(buffer);
stream.close();
json = new String(buffer, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
return null;
}
return json;
}
然后解析
onPostExecute(String str){
JsonObject object = new JsonObject(str);
JsonArray arr = object.getJsonArray("tabaksArrayList");
...}
有关详细信息,请参见如果您没有初始化ArrayList,请尝试更改:
protected ArrayList<Tabak> tabakArrayList;
protectedarraylist tabakArrayList;
用于:
protectedarraylist tabakArrayList=newarraylist();
这看起来像是您的json模式问题,我猜listOfTodos
返回null。您可以参考以生成模式
但有时这些工具会让我们感到困惑,所以我尝试手动创建模式,如下所示:
TabakRoot.java
public class TabakRoot {
@SerializedName("tabaksArrayList")
private List<TabakItem> tabakItem = null;
public List<TabakItem> getTabakItem() {
return tabakItem;
}}
最后
TabakRoot listOfTodos = new Gson().fromJson(reader, TabakRoot.class);
List<TabakItem> todoList = listOfTodos.getTabakItem();
TabakRoot-listOfTodos=new Gson().fromJson(reader,TabakRoot.class);
List-todoList=listOfTodos.getTabakItem();
如果您没有初始化tabakArrayList
,请按如下所示向列表中添加构造函数
public ListOfTabaks{
tabakArrayList = new ArrayList<>();
}
公共列表数据库{
tabakArrayList=新的ArrayList();
}
您应该很好第61行是哪一行?@Prashant可能是带有增强for loop61:for(Tabak item:todoList)的那一行{我知道由于列表的原因,有一个例外是空的,但为什么?可能是重复的
public class TabakItem {
@SerializedName("family")
@Expose
private String tabakFamily;
public String getTabakFamily() {
return tabakFamily;
}}
TabakRoot listOfTodos = new Gson().fromJson(reader, TabakRoot.class);
List<TabakItem> todoList = listOfTodos.getTabakItem();
public ListOfTabaks{
tabakArrayList = new ArrayList<>();
}