Http请求别的接口,这个接口返回的json如果解析失败,则将响应body进行json反序列化

将body写到文本或输出就会自动将转义去掉,所以发出来的文本是不能解析的,

双引号在没有转成文本前前面是有转义符的,输出成文本就会去掉转义符,

所以需要:将响应body进行json反序列化

public static String doGet(String url, int connTimeout, int readTimeout, String charset, Map<String, String> headerMap) {
        ......
        GetMethod method = new GetMethod(url);
        if (statusCode == HttpStatus.SC_OK) {
            //将响应body进行json反序列化
            String res = getRequestBodyJson(method.getResponseBodyAsStream());
        }
        ......
}

private static String getRequestBodyJson(InputStream inputStream) throws IOException {
        Reader input = new InputStreamReader(inputStream);
        Writer output = new StringWriter();
        char[] buffer = new char[1024 * 4];
        int n;
        while(-1 != (n = input.read(buffer))) {
            output.write(buffer, 0, n);
        }
        return output.toString();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSONJavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。序列化和反序列化是两个关键的概念,它们在处理JSON数据时非常重要。 **序列化**: 序列化是将数据结构转换为JSON字符串的过程。这个过程用于在网络通信、存储或持久化数据时,将复杂的数据结构如对象和数组转换为可传输的文本形式。例如,如果你有一个JavaScript对象: ```javascript let user = { name: "John", age: 30, address: { city: "New York", country: "USA" } }; ``` 你可以使用JSON.stringify()方法将其序列化为JSON字符串: ```javascript let jsonString = JSON.stringify(user); console.log(jsonString); // {"name": "John", "age": 30, "address": {"city": "New York", "country": "USA"}} ``` **反序列化**: 反序列化则是将JSON字符串重新转换回原始数据结构的过程。当你从网络接收到JSON数据,或者从存储中读取并想要使用它时,可以使用JSON.parse()方法: ```javascript let restoredUser = JSON.parse(jsonString); console.log(restoredUser.name); // John ``` **应用样例**: 在Web应用中,常用于服务器-客户端数据交互,比如用户登录信息的存储和恢复: - 客户端向服务器发送请求(POST、PUT等),包含JSON化的用户信息: ```javascript fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: 'john', password: '123456' }) }) ``` - 服务器接收到请求后,处理JSON数据,存储用户信息,并返回响应,可能包含JSON化的状态码和消息: ```javascript // 假设服务器返回 const response = { status: 200, message: 'Login successful', user: { id: 1, name: 'John', ... } } // 序列化返回给客户端 res.json(response); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值