千家信息网

HttpClient、FastJson将json转换为JavaBean

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,HttpClient一、HttpClient简介HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工
千家信息网最后更新 2026年11月03日HttpClient、FastJson将json转换为JavaBean

HttpClient

一、HttpClient简介

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。

二、FastJson

1、FastJson简介

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

Fastjson 源码地址:https://github.com/alibaba/fastjson

Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

FastJson特性

提供服务器端、安卓客户端两种解析工具,性能表现较好。

提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

允许转换预先存在的无法修改的对象(只有class、无源代码)。

Java泛型的广泛支持。

允许对象的自定义表示、允许自定义序列化类。

支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

例子

1、GetData.java:使用httpclient接收数据、再用fastJson将json数据解析为JavaBean。

package com.get_data.get;import java.io.IOException;import com.alibaba.fastjson.JSON;import org.apache.http.Header;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;public class GetData {    public static void main(String[] args) {        HttpClient client = new DefaultHttpClient();        //创建get请求实例        //HttpGet get = new HttpGet("http://www.baidu.com");        HttpGet get = new HttpGet("http://localhost:7333/a");        System.out.println("请求的uri为:"+get.getURI());        try {            // 客户端执行get请求 返回响应实体            HttpResponse response = client.execute(get);            //获取请求状态行            System.out.println("请求状态行为:"+response.getStatusLine());            //获取所有的请求头            Header[] headers=response.getAllHeaders();            for (Header header :headers){            //遍历获取所有请求头的名称和值            System.out.println(header.getName()+" :--: "+header.getValue());            }            System.out.println("-----------------------------------------------");            //获取响应的实体            HttpEntity entity =response.getEntity();            if (entity!=null){            String str=EntityUtils.toString(entity,"UTF-8");            System.out.println("entity:"+str);            System.out.println("获取到的json为:"+str);            User newUser = JSON.parseObject(str, User.class);            System.out.println("User: "+newUser);            System.out.println("newUser.getAddress(): "+newUser.getAddress());            //System.out.println(EntityUtils.toString(entity,"UTF-8"));            System.out.println("=================================");            System.out.println("内容长度为:"+entity.getContentLength());        }        } catch (ClientProtocolException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }finally{            //释放连接            client.getConnectionManager().shutdown();        }    }}

2、http://localhost:7333/a返回的json数据

{    "name":"James",    "age":18,    "address":"chongqing"}

3、User.java实体类

public class User {    private String name;    private int age;    private String sex;    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    private String address;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    @Override    public String toString() {        return "User{" +                "name='" + name + '\'' +                ", age=" + age +                ", address='" + address + '\'' +                '}';    }}

4、

输出结果:

请求的uri为:http://localhost:7333/a14:31:04.341 [main] DEBUG org.apache.http.impl.conn.BasicClientConnectionManager - Get connection for route {}->http://localhost:733314:31:04.387 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnectionOperator - Connecting to localhost:733314:31:04.403 [main] DEBUG org.apache.http.client.protocol.RequestAddCookies - CookieSpec selected: default14:31:04.403 [main] DEBUG org.apache.http.client.protocol.RequestAuthCache - Auth cache not set in the context14:31:04.403 [main] DEBUG org.apache.http.client.protocol.RequestTargetAuthentication - Target auth state: UNCHALLENGED14:31:04.403 [main] DEBUG org.apache.http.client.protocol.RequestProxyAuthentication - Proxy auth state: UNCHALLENGED14:31:04.403 [main] DEBUG org.apache.http.impl.client.DefaultHttpClient - Attempt 1 to execute request14:31:04.403 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Sending request: GET /a HTTP/1.114:31:04.403 [main] DEBUG org.apache.http.wire -  >> "GET /a HTTP/1.1[\r][\n]"14:31:04.403 [main] DEBUG org.apache.http.wire -  >> "Host: localhost:7333[\r][\n]"14:31:04.403 [main] DEBUG org.apache.http.wire -  >> "Connection: Keep-Alive[\r][\n]"14:31:04.403 [main] DEBUG org.apache.http.wire -  >> "User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_161)[\r][\n]"14:31:04.403 [main] DEBUG org.apache.http.wire -  >> "[\r][\n]"14:31:04.403 [main] DEBUG org.apache.http.headers - >> GET /a HTTP/1.114:31:04.403 [main] DEBUG org.apache.http.headers - >> Host: localhost:733314:31:04.403 [main] DEBUG org.apache.http.headers - >> Connection: Keep-Alive14:31:04.403 [main] DEBUG org.apache.http.headers - >> User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_161)14:31:04.419 [main] DEBUG org.apache.http.wire -  << "HTTP/1.1 200 [\r][\n]"14:31:04.434 [main] DEBUG org.apache.http.wire -  << "Content-Type: application/json;charset=UTF-8[\r][\n]"14:31:04.434 [main] DEBUG org.apache.http.wire -  << "Transfer-Encoding: chunked[\r][\n]"14:31:04.434 [main] DEBUG org.apache.http.wire -  << "Date: Tue, 01 Jan 2019 06:31:04 GMT[\r][\n]"14:31:04.434 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"14:31:04.434 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Receiving response: HTTP/1.1 200 14:31:04.434 [main] DEBUG org.apache.http.headers - << HTTP/1.1 200 14:31:04.434 [main] DEBUG org.apache.http.headers - << Content-Type: application/json;charset=UTF-814:31:04.434 [main] DEBUG org.apache.http.headers - << Transfer-Encoding: chunked14:31:04.434 [main] DEBUG org.apache.http.headers - << Date: Tue, 01 Jan 2019 06:31:04 GMT14:31:04.434 [main] DEBUG org.apache.http.impl.client.DefaultHttpClient - Connection can be kept alive indefinitely请求状态行为:HTTP/1.1 200 Content-Type :--: application/json;charset=UTF-8Transfer-Encoding :--: chunkedDate :--: Tue, 01 Jan 2019 06:31:04 GMT-----------------------------------------------14:31:04.450 [main] DEBUG org.apache.http.wire -  << "2f[\r][\n]"14:31:04.450 [main] DEBUG org.apache.http.wire -  << "{"name":"James","age":18,"address":"chongqing"}"14:31:04.450 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"14:31:04.450 [main] DEBUG org.apache.http.wire -  << "0[\r][\n]"14:31:04.450 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"14:31:04.450 [main] DEBUG org.apache.http.impl.conn.BasicClientConnectionManager - Releasing connection org.apache.http.impl.conn.ManagedClientConnectionImpl@4d3167f414:31:04.450 [main] DEBUG org.apache.http.impl.conn.BasicClientConnectionManager - Connection can be kept alive indefinitelyentity:{"name":"James","age":18,"address":"chongqing"}获取到的json为:{"name":"James","age":18,"address":"chongqing"}User: User{name='James', age=18, address='chongqing'}newUser.getAddress(): chongqing=================================内容长度为:-114:31:04.590 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection - Connection 0.0.0.0:64518<->127.0.0.1:7333 closedProcess finished with exit code 0
对象 支持 功能 客户 客户端 字符 字符串 实体 工具 数据 状态 应用 内容 子项 子项目 工具包 应用程序 建议 方法 源码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技图片 博彦科技互联网金融 湖南永感互联网科技有限公司 互联网品科技 上海喔噻互联网科技 润盈互联网科技 互联网科技咨询 盛创互联网科技有限公司 须眉科技是互联网公司吗 小米互联网科技园设置 互联网科技项目计划书材料类 互联网还是高科技吗 彤创互联网科技有限公司 阿大互联网科技有限公司 崇明区互联网教育科技售后服务 科技类公司包括互联网吗 佛山市拉法互联网科技有限公司 普陀区互联网教育科技管理办法 互联网科技职业技能培训学校 互联网科技和医药行业 小米移动互联网科技园 有马互联网科技 致骋互联网科技 互联网科技博主是什么意思 彤创互联网科技有限公司 互联网科技与大数据专业 银川新华互联网科技学校联系电话 富国互联网金融科技混合基金 重庆科技产业互联网有哪些 互联网的黑科技实验室
0