我有一个JSON:myJSON
但是当我尝试解析它时,我有这样的问题:
07-29 18:51:21.203 4995-4995 /? W / System.err的: org.json.JSONException:值 {“id”:2,“max_volume”:20,“current_volume”:6,“name”:“Поднятьсяна16 этажза5минутпешкомисоскользитьвниз“,”“description”:“Ктопровалит испытание,скриком'ЭтоСПАРТА!' будетскинутс16этажа。 Кто провалитиспытание,скриком'ЭтоСПАРТА!' будетскинутс16этажа。 Ктопровалитиспытание,скриком'ЭтоСПАРТА!' будетскинутс16 этажа。 Ктопровалитиспытание,скриком'ЭтоСПАРТА!' будетскинутс 16этажаАЗАЗАчто-нибудьещёчтозанимаетмноготекста, !ха-ха “ ”MAX_COUNT“:10, ”date_from“: ”2015-05-05“, ”DATE_TO“: ”2015年5月15日“, ”CREATE_TIME“:” 2015年5月4日 23:00 GMT + 03:00“,”状态“:”NOT_STARTED“,”update_date“:”2015-05-05 08:00 GMT + 03:00" , “类别”: “NON_STUDY”, “主题”:{ “subject_id”:1, “类型”:“外国 语言 “ ”名“: ”英语“}, ”用户“:[{ ”ID“:1, ”FIRST_NAME“: ”伊琳娜“, ”姓氏“: ”噪声“, ”IMG“:” https://开头avatars3 .githubusercontent.com / U / 1412561 v = 3及S = 460 “},{” ID? “:13”,如first_name “:” 亚历克斯 “ ”姓氏“: ”GRA“, ”IMG“:” HTTPS:/ /avatars2.githubusercontent.com/u/964601?v=3&s=460"}],"badge":{"badge_id":1,"img":"https://www.gravatar.com/avatar/ e514b017977ebf742a418cac697d8996 S = 64&安培; d = identicon&安培; R = PG “ ”姓名?“: ”EnglishPro“, ”受试者“:{ ”ID“:1, ”名称“: ”英语“, ”类型“:” 外国 语言“},”练习“:10,”理论“:0,”日期“:”2015-05-07 14:30 GMT + 03:00“,”进度“:0.14}}类型org.json.JSONObject不能 转换为JSONArray
我试过这样:
服务代码:
public class getChallenge extends AsyncTask<Void, Void, String> {
String mUrl;
OkHttpClient client = new OkHttpClient();
String result = "";
public getChallenge(String url) {
this.mUrl = url;
}
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
@Override
protected String doInBackground(Void... params) {
Log.d("Background", "inBackground");
try {
URL mUrl = new URL(url);
urlConnection = (HttpURLConnection) mUrl.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
result = buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String strJson) {
super.onPostExecute(strJson);
Log.d(LOG_TAG, strJson);
Exercise exercise = new Exercise();
exercise = ParseJSON.ExcerciseParseJSON(strJson);
// Log.d("EXERSICE", exercise.getName());
}
}
和我的Parse方法:
public static Exercise ExcerciseParseJSON(String strJson) {
Log.d("ExcerciseParseJSON", "working");
Exercise exercise = new Exercise();
try {
JSONArray array = new JSONArray(strJson);
exercise.setId(array.getJSONObject(0).getLong("id"));
exercise.setMax_volume(array.getJSONObject(0).getInt("max_volume"));
exercise.setCurrent_volume(array.getJSONObject(0).getInt("current_volume"));
exercise.setName(array.getJSONObject(0).getString("name"));
exercise.setDescription(array.getJSONObject(0).getString("description"));
exercise.setMax_count(array.getJSONObject(0).getInt("max_count"));
exercise.setDate_from(array.getJSONObject(0).getString("date_from"));
exercise.setDate_to(array.getJSONObject(0).getString("date_to"));
exercise.setCreate_time(array.getJSONObject(0).getString("create_time"));
exercise.setStatus(array.getJSONObject(0).getString("status"));
exercise.setUpdate_time(array.getJSONObject(0).getString("update_date"));
exercise.setCategory(array.getJSONObject(0).getString("category"));
} catch (JSONException e) {
e.printStackTrace();
}
return exercise;
}
我的错误在哪里?或者你可以给我正确的代码:)
答案 0 :(得分:0)
使用JSONObject
后,只需使用JSONTokener()
将json存储为对象。
从中你可以做你现在做的事情。
JSONObject array = (JSONObject) new JSONTokener(strJson).nextValue();
和
exercise.setId(array.getLong("id"));
以防万一,您想要获取users
列表
你可以使用像
这样的数组JSONArray users = array.getJSONArray("users")
答案 1 :(得分:0)
JSONObject array = new JSONObject(strJson);
使用此功能并查看
答案 2 :(得分:0)
试试这个
{"id":1,"name":"p1","similarProducts":[{"id":2,"name":"p2"}]}