You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:11:54