我一整夜都在寻找,但找不到任何对我有用的东西。
我正在尝试用Java读取和解析JSON文件。我尝试了我发现的每个代码,但没有一个对我有效。我非常感谢你的帮助。
所以这是代码:
public void parseJSONData() {
clearData();
try {
FileInputStream in = openFileInput(getFilesDir()
+ "/tbl_category.json");
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
}
我正在使用 getFilesDir()+“/ tbl_category.json”,因为该应用会在/data/data/com.the.restaurant/files/中下载some.json文件开始。
这是类代码的其余部分:
// parse json data and store into arraylist variables
JSONObject json = new JSONObject(line);
JSONArray data = json.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject object = data.getJSONObject(i);
JSONObject category = object.getJSONObject("Category");
Category_ID.add(Long.parseLong(category
.getString("Category_ID")));
Category_name.add(category.getString("Category_name"));
Category_image.add(category.getString("Category_image"));
Log.d("Category name", Category_name.get(i));
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
IOConnect = 1;
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我刚开始学习Java,我非常感谢你的帮助!
答案 0 :(得分:4)
而不是
JSONObject json = new JSONObject(line);
将最后一行读取转换为JSON对象(可能会失败),您需要
JSONObject json = new JSONObject(sb.toString());
这将采用行的连接(StringBuilder
)的内容
答案 1 :(得分:1)
在这一行中,您只能在一行中读取以创建JSON对象。
JSONObject json = new JSONObject(line);
它应该使用包含整个JSON字符串的StringBuilder
。
JSONObject json = new JSONObject(sb.toString());
答案 2 :(得分:0)
val inputStream: InputStream = context.assets.open(fileName)
dataDetails = inputStream.bufferedReader().use{it.readText()}
// now we create a json object and read the values
val jsonObject = JSONObject(dataDetails)
// if you know that is a number you can get it like this
var age = jsonObj.getInt("person_age")
// the same for boolean
var someBooleanValue = jsonObj.getBoolean("person_married")
// for an array
val jsonArrayLabels = jsonObj.getJSONArray("simpleArray")
//If you know what type you have to get use the function for that type,
//so you can save them and later do manipulations with them