java - 在 Android 中读取 JSON 文件并出现 API 问题

标签 java android json

我是Android新手。我有一个可用的JAVA中的JSON读取代码,如下所示。它将文件保存为字符串,然后从中创建 JSON 数组。我想在 android 中做同样的事情,但它说错误(如下所示)

 String jsonInput = new Scanner(new File("c:\\patient.txt")).useDelimiter("\\Z").next();
 JSONArray ja = new JSONArray(jsonInput);
 System.out.println("LENGTH IS____"+ja.length());
 String[][] table = new String[ja.length()][4];
 for(int y=0;y<ja.length();y++)
  {
      JSONObject jb = ja.getJSONObject(y);
      System.out.println(jb.length());
      String p=jb.getString("priority");
      String r=jb.getString("rule_body");
      String c=jb.getString("cons");
      String b=jb.getString("boolean");
      System.out.println("Priority: "+p+"- Rule Body: "+r+"- Consequence: "+c+"- flag: "+b);
      table[y][0]=p;
      table[y][1]=r;
      table[y][2]=c;
      table[y][3]=b;


  }

按预期工作正常。我想在 Android 中执行相同的操作(将文本文件复制到 Assets 文件夹),但我收到错误

Call require API 19 and the MIN is 8

我需要帮助,了解如何在工作 API 中解决这个问题。我试图从 JSON 文件中获取数组,正如我在这里看到的,大多数示例都是针对 JSON 对象的。发布的问题JSONArray not supported before Android API 19没有明确提到我所说的问题。

InputStream json= getAssets().open("patient.txt");
JSONArray ja=new JSONArray(json);
System.out.println("LENGTH IS____"+ja.length());
String[][] table = new String[ja.length()][4];

JSON的结构是

[{"priority":"1","rule_body":"person(?x),patientid(?y),hasid(?x,?y)","cons":"patient(?x)","boolean":"1"},{"priority":"2","rule_body":"patient(?x),hasbp(?x,high)","cons":"hassituation(?x,emergency)","boolean":"1"},{"priority":"3","rule_body":"patient(?x),hassituation(?x,emergency)","cons":"calldr(emergency)","boolean":"1"},{"priority":"4","rule_body":"patient(?x),calldr(emergency)","cons":"calling_in_dr(emergency)","boolean":"1"},{"priority":"5","rule_body":"patient(?x),calling_in_dr(emergency)","cons":"cured(?x)","boolean":"1"}]

使用php编码方法进行编码。

最佳答案

用这个替换你的代码。这对于较低的 API 也可以正常工作。您正在传递 InputStream 对象作为参数,而应该传递 String

InputStream is = getAssets().open("patient.txt");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
String json = new String(buffer, "UTF-8");
JSONArray ja = new JSONArray(json);
System.out.println("LENGTH IS____"+ ja.length());
String[][] table = new String[ja.length()][4];

关于java - 在 Android 中读取 JSON 文件并出现 API 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38821492/

相关文章:

java - 如何通过 optaplanner 引擎获得没有任何硬分数的解决方案

java - 将 android 连接到移动数据库时出现 JSONArray 错误

android - AndroidX 中的 MotionLayout

ruby-on-rails - 我如何漂亮地将散列打印到 Rails View ?

android - 在 android 中改造带有 json 数组名称的响应对象

php - laravel4 获取模型外部的最后一个插入 ID

java - 此 URL 不支持 HTTP 方法 GET - Tomcat

java - int[] 数组和 int array[] 之间的区别

java - 在端口 8080 上执行时 JSP/Servlets 程序出错 :

java - 如何从 AutoCompleteTextView 中选取文本并将其显示在 ListView 中?