我正试图将json文件解析为android开发项目的一部分。以下是不断弹出的错误消息:W/System.err: java.nio.file.NoSuchFileException: C:/Users/andno/Desktop/AndroidDev2ClimateApp/app/src/main/java/com/example/androiddev2climateapp/ui/home/test.json
然而,在android studios中,错误中的路径是作为链接提供的,我可以单击该链接,从而指向写入文件-因此,我不认为路径是错误的。这是我的代码:
String first = "C:/Users/andno/Desktop/AndroidDev2ClimateApp/app/src/main/java/com/example/androiddev2climateapp/ui/home/test.json";
try {
String fileContents = new String((Files.readAllBytes(Paths.get(first))));
JSONObject json = new JSONObject(fileContents);
JSONArray widgets = new JSONArray("WidgetArray");
for(int i = 0; i < widgets.length(); i++){
int id = widgets.getJSONObject(i).getInt("id");
System.out.println(id);
}
} catch(IOException | JSONException e){
e.printStackTrace();
}
很抱歉,格式搞砸了。我试过在路径中使用\代替/,但不起作用。任何帮助都将不胜感激-非常感谢!
在测试时,您可能可以让这些代码正常工作,但很明显,您的android手机上没有C:Usersandno
,而且永远不会有。
你找错树了。您根本不想读取文件。
您想从java(或者更确切地说,android(加载类文件(或者android中的类文件(的同一个地方读取资源。这可能是从一个罐子或apk什么的。
UiMain.class.getResource("test.json")
或
UiMain.class.getResourceAsStream("test.json")
将从UiMain.class
所在的同一个位置获得一个名为test.json
的资源(即,在同一个包中,我假设这是类com.example.android.androiddev2climateapp.home.ui.UiMain
。第一个是URL,您通常可以将其传递给图像等的构造函数,第二个是流,您需要安全地关闭它(如果android已经开始添加有20年历史的java功能,请尝试/最后或尝试使用资源(,您可以使用各种API将其转换为字符串。也许JSON API本身可以被提供一个输入流。