问题
try {
File yourFile = new File(Environment.getExternalStorageDirectory(), "textarabics.txt");
FileInputStream stream = new FileInputStream(yourFile);
String jsonStr = null;
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
jsonStr = Charset.defaultCharset().decode(bb).toString();
Log.d("Noga Store", "jString = " + jsonStr);
}
finally {
stream.close();
}
Log.d("Noga Store", "jString = " + jsonStr);
JSONObject jsonObj = new JSONObject(jsonStr);
// Getting data JSON Array nodes
JSONArray data = jsonObj.getJSONArray("data");
// looping through All nodes
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
String id = c.getString("id");
String title = c.getString("title");
String duration = c.getString("duration");
// tmp hashmap for single node
HashMap<String, String> parsedData = new HashMap<String, String>();
// adding each child node to HashMap key => value
parsedData.put("id", id);
parsedData.put("title", title);
parsedData.put("duration", duration);
// do what do you want on your interface
}
} catch (Exception e) {
e.printStackTrace();
}
at that point i am getting crash:
JSONObject jsonObj = new JSONObject(jsonStr);
and this is my json file into my sd card:
{
"data": [
{
"id": "1",
"title": "Farhan Shah",
"duration": 10,
},
{
"id": "2",
"title": "Noman Shah",
"duration": 10,
},
{
"id": "3",
"title": "Ahmad Shah",
"duration": 10,
},
{
"id": "4",
"title": "Mohsin Shah",
"duration": 10,
},
{
"id": "5",
"title": "Haris Shah",
"duration": 10,
}
]
}
回答1:
{ "data": [ { "id": "1", "title": "Farhan Shah", "duration": 10, }, { "id": "2", "title": "Noman Shah", "duration": 10, }, { "id": "3", "title": "Ahmad Shah", "duration": 10, }, { "id": "4", "title": "Mohsin Shah", "duration": 10, }, { "id": "5", "title": "Haris Shah", "duration": 10, } ] }
This JSON is invalid "duration": 10,
there is an extra comma at the end. Remove that comma and try.
Remove that comma from every object. The modified JSON will look like this.
{
"data": [
{
"id": "1",
"title": "Farhan Shah",
"duration": 10
},
{
"id": "2",
"title": "Noman Shah",
"duration": 10
},
{
"id": "3",
"title": "Ahmad Shah",
"duration": 10
},
{
"id": "4",
"title": "Mohsin Shah",
"duration": 10
},
{
"id": "5",
"title": "Haris Shah",
"duration": 10
}
]
}
回答2:
String jsonStr = "";
instead of
String jsonStr = null;
来源:https://stackoverflow.com/questions/21969485/android-org-json-jsonexception-value-of-type-java-lang-string-cannot-be-convert