如何在Java中从JSON响应提取键值?无法提取doj字段值
解决Volley框架下从JSON响应提取"doj"字段的问题
嘿,我看你在用Volley处理JSON响应时,提取doj字段遇到了麻烦。先看你给出的JSON结构,doj是顶层直接存在的键,所以处理起来其实很直接,我给你写个完整的示例代码,再说说可能导致失败的常见原因:
正确的Volley请求与JSON解析代码
private void loadJourneyData() { // 替换成你实际的接口URL String apiUrl = "https://your-api-endpoint-here.com/get-data"; StringRequest journeyRequest = new StringRequest(Request.Method.GET, apiUrl, response -> { try { // 将Volley返回的字符串转为根JSONObject JSONObject rootJson = new JSONObject(response); // 直接从根对象提取"doj"字段 String dateOfJourney = rootJson.getString("doj"); // 这里可以把值用到你的业务逻辑里,比如显示到UI上 Log.i("JourneyInfo", "Date of Journey: " + dateOfJourney); // textViewDoj.setText(dateOfJourney); } catch (JSONException e) { // 捕获解析异常,方便排查问题 Log.e("JsonParseError", "解析JSON失败: " + e.getMessage()); e.printStackTrace(); } }, error -> { // 处理Volley请求错误(比如网络问题、接口报错) Log.e("VolleyError", "请求接口失败: " + error.getMessage()); }); // 将请求加入Volley的请求队列 Volley.newRequestQueue(this).add(journeyRequest); }
可能导致提取失败的常见原因
- 字段名大小写错误:JSON键是区分大小写的!一定要确保你用的是小写的
"doj",别写成"DOJ"、"Doj"或者拼写错误的"dojj"。 - 错误地从嵌套对象提取:有些朋友会误以为
doj在某个子对象里(比如reservation_upto),但看你的JSON结构,它是顶层直接存在的,直接从根JSONObject提取就好。 - 未捕获JSON解析异常:如果解析时没加
try-catch,一旦JSON格式不对或者字段不存在,会直接崩溃,加了异常捕获才能看到具体的错误原因。 - 请求方法不匹配:如果接口要求用POST请求,但你用了GET,可能拿不到正确的JSON响应,要确认请求方法和接口要求一致。
- 响应内容不是预期的JSON:可以先在
onResponse里打印response字符串,看看是不是拿到了正确的JSON——有时候接口可能返回HTML错误页或者其他非JSON内容,导致解析失败。
举一反三:提取嵌套字段的示例
如果之后需要提取嵌套对象里的字段(比如reservation_upto的name),可以这么做:
// 提取reservation_upto子对象 JSONObject reservationObj = rootJson.getJSONObject("reservation_upto"); String stationName = reservationObj.getString("name"); Log.i("StationInfo", "Reservation Station: " + stationName);
内容的提问来源于stack exchange,提问作者Varun Srivastava
相关产品推荐
相关产品推荐

