我正在从本地驱动器读取一个json文件并将其作为gson。它作为一个java应用程序工作。
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader("D:\\AircraftService.json"));
DataObject[] obj = gson.fromJson(br, DataObject[].class);
System.out.println("The object length is: " + obj.length);
for(int i = 0; i<obj.length ; i++ )
{
System.out.println(obj[i].AC + " " + obj[i].Fleet + " " + obj[i].SubFleet);
}
使用这个我试图填充一个安卓列表
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listplaceholder);
ListView lv= (ListView)findViewById(R.id.list);
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader("D:\\AircraftService.json"));
DataObject[] obj = gson.fromJson(br, DataObject[].class);
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
for(int i=0 ; i<obj.length ; i++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("AC", obj[i].AC);
map.put("Fleet", obj[i].Fleet );
map.put("SubFleet", obj[i].SubFleet );
fillMaps.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.main, new String[] {"AC", "Fleet"}, new int[] {R.id.ac, R.id.fleet});
lv.setAdapter(adapter);
}
无法填充对象。输出是空白的。你能告诉我哪里出错了。
答案 0 :(得分:1)
我确定您的文件不会驻留在Android设备上的D:\AircraftService.json
中。
调整路径,如果您将文件存储在那里,请使用Environment.getExternalStorageDirectory()
获取SD卡或闪存的路径。如果您将其存储在应用资产文件夹中,请使用file:///android_asset/
作为基本路径,并附加文件名(和子文件夹)。
编辑:考虑下面的评论,这是一个简短的方法。
首先,我建议将文件存储在资源中,因为阅读SD卡需要对您的应用程序进行单独许可。
您项目中的一个名为res/
的文件夹。在其中创建一个子文件夹,将其命名为raw
。这是一个标准的android命名约定,用于存储非标准资源(如布局或字符串)的文件。之后,您应该能够使用路径file:///android_asset/raw/AircraftService.json
答案 1 :(得分:0)
无法打开json文件的路径。尝试移动文件,在assets folder
中说,而不是打开它。