Java中如何从BoredAPI返回的JSON数据中提取指定的activity字段?
实现方案
方案1:使用Gson库解析(推荐)
该方式稳定性高,不会因为JSON格式的换行、空格、字段顺序变化出现解析错误,是处理JSON的标准方案。
- 第一步:引入Gson依赖,若使用Maven管理项目,在pom.xml中添加如下配置:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
- 第二步:修改原有代码,增加JSON解析逻辑提取指定字段:
import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; public class apiTest { public static void main(String[] args) { String ApiFRomData; try { URL url_name = new URL("https://www.boredapi.com/api/activity"); BufferedReader sc = new BufferedReader(new InputStreamReader(url_name.openStream())); ApiFRomData = sc.readLine().trim(); // 解析JSON提取activity字段 JsonObject jsonObject = JsonParser.parseString(ApiFRomData).getAsJsonObject(); String activityContent = jsonObject.get("activity").getAsString(); System.out.println(activityContent); } catch (Exception e) { System.out.println("Cannot Execute Properly"); } } }
方案2:无第三方依赖的简易实现
如果不想额外引入依赖,且确认该接口返回的JSON格式长期固定,可以使用正则匹配提取字段,仅适合当前这类简单JSON场景:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; public class apiTest { public static void main(String[] args) { String ApiFRomData; try { URL url_name = new URL("https://www.boredapi.com/api/activity"); BufferedReader sc = new BufferedReader(new InputStreamReader(url_name.openStream())); ApiFRomData = sc.readLine().trim(); // 正则匹配activity字段的取值 Pattern pattern = Pattern.compile("\"activity\"\\s*:\\s*\"([^\"]+)\""); Matcher matcher = pattern.matcher(ApiFRomData); if (matcher.find()) { System.out.println(matcher.group(1)); } else { System.out.println("未找到activity字段"); } } catch (Exception e) { System.out.println("Cannot Execute Properly"); } } }
内容的提问来源于stack exchange,提问作者coding ninja
相关产品推荐
相关产品推荐

