Java中使用 JSoup 发起 HTTP 请求并处理响应中的 JSON 数据,可以结合 JSoup 和 Java 的 JSON 解析库(如 fastJson、Jackson 或 Gson)来实现。本文主要介绍用Java JSoup请求网站时,响应JSON数据的处理方法及代码。

1、获取JSON或其它格式的数据

使用 Jsoup 发起一个 HTTP 请求,并将请求返回的内容(通常是服务器响应的 body 部分)作为一个字符串形式的 JSON 数据 返回。通过 ignoreContentType(true) 告诉 Jsoup 忽略内容类型,不要尝试将响应解析为 HTML。

// JSON example
String json = Jsoup.connect(url).ignoreContentType(true).execute().body();

2、使用Header(请求头) "Accept:text/javascript"

可以使用 header() 方法来设置自定义的请求头。需要将 Accept 请求头设置为 text/javascript,可以在调用.header() 时传入键值对。

 String InboxJson=Jsoup.connect("https://www.fiverr.com/conversations/Json")
                            .timeout(1000000) 
                            .header("Accept", "text/javascript")
                            .userAgent("Mozilla/5.0 (Windows NT 6.1; rv:40.0) Gecko/20100101 Firefox/40.0")
                            .get()
                            .body()
                            .text();

3、使用fastJson处理JSON数据

FastJSON 是阿里巴巴开发的一个高性能 JSON 解析库,可以使用 FastJSON 来解析和处理 JSON 数据。 FastJSON 是一个高效的 Java JSON 处理库,可以将 JSON 字符串解析为 Java 对象,或者将 Java 对象转换为 JSON。

1) 使用Maven引用fastJson的配置

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.59</version>
</dependency>

2) 使用示例代码

//序列化,将Java对象转成JSON字符串
import com.alibaba.fastjson.JSON;
Group group = new Group();
group.setId(0L);
group.setName("admin");
User guestUser = new User();
guestUser.setId(2L);
guestUser.setName("guest");
User rootUser = new User();
rootUser.setId(3L);
rootUser.setName("root");
group.addUser(guestUser);
group.addUser(rootUser);
String jsonString = JSON.toJSONString(group);
System.out.println(jsonString);

//反序列化,将JSON字符串数据转成Java对象
String jsonString = "{\"id\":0,\"name\":\"admin\",\"users\":[{\"id\":2,\"name\":\"guest\"},{\"id\":3,\"name\":\"root\"}]}";
Group group = JSON.parseObject(jsonString, Group.class);

推荐文档