java http 发请求,结果转jsonobject解析

HTTP请求与JSON解析示例
本文演示了如何使用Java进行HTTP请求,并解析JSON对象获取特定字段值。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

public class httprequest {

	public static void main(String[] args) throws IOException, JSONException {
		//http 请求
		String urlstr = "https://www.baidu.com";
		String result = "";
		BufferedReader br = null;
		URL url = new URL(urlstr);
		URLConnection connection = url.openConnection();
		connection.setRequestProperty("accept", "*/*");
        connection.setRequestProperty("connection", "Keep-Alive");
        connection.setRequestProperty("user-agent",
                 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        connection.connect();
        Map<String,List<String>> map = connection.getHeaderFields();
        for(String key:map.keySet()){
        	 System.out.println(key+map.get(key));
        }
        br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line = null;
        while((line = br.readLine())!=null){
        	 result+=line;
        }
        System.out.println("-----------------\n"+result);
        //解析jsonobject
        String jsonstr = "{\"语文\":\"99\",\"数学\":\"98\",\"英语\":\"97\"}";
        String value1 = null;
        JSONObject jsonobj = new JSONObject(jsonstr);
        value1 = jsonobj.getString("数学");
        System.out.println(value1);
	}

}

Java中,如果你使用 `RestTemplate` 送GET请求并获取响应,通常你会希望将返回的结果换为 `JSONObject`(或类似的结构化对象)以便后续处理。常用的JSON库包括 `org.json`、`com.alibaba.fastjson`(FastJSON)、`com.google.gson`(Gson)和 `org.springframework.boot.jackson`(Jackson)等。 下面我将使用 **Jackson**(Spring Boot默认使用)来演示如何将 `RestTemplate` 的GET请求结果换为 `JSONObject`(在Jackson中对应的是 `JsonNode` 或 `Map`)。 --- ### 示例代码(使用 Jackson): ```java import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class RestTemplateToJsonExample { public static void main(String[] args) throws Exception { // 创建RestTemplate实例 RestTemplate restTemplate = new RestTemplate(); // 定义GET请求的URL String url = "https://jsonplaceholder.typicode.com/posts/1"; // 送GET请求并接收为String String jsonResponse = restTemplate.getForObject(url, String.class); // 使用Jackson的ObjectMapper将JSON字符串解析为JsonNode对象 ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(jsonResponse); // 输出JSON对象中的字段 System.out.println("ID: " + jsonNode.get("id").asInt()); System.out.println("Title: " + jsonNode.get("title").asText()); System.out.println("Body: " + jsonNode.get("body").asText()); } } ``` --- ### 代码解释: 1. **送GET请求**: - 使用 `restTemplate.getForObject(url, String.class)` 获取原始的JSON字符串。 2. **使用Jackson解析JSON字符串**: - `ObjectMapper` 是Jackson的核心类,用于序列化和反序列化JSON。 - `objectMapper.readTree(jsonResponse)` 将字符串解析为 `JsonNode`,它是一个通用的JSON树结构,可以像Map一样访问字段。 3. **访问JSON字段**: - 使用 `jsonNode.get("字段名")` 获取字段值,再通过 `.asInt()`、`.asText()` 等方法换类型。 --- ### 其他方式:直接换为Map 如果你不想使用 `JsonNode`,也可以将结果换为 `Map<String, Object>`: ```java Map<String, Object> map = objectMapper.readValue(jsonResponse, Map.class); System.out.println("ID: " + map.get("id")); System.out.println("Title: " + map.get("title")); ``` --- ### 相关依赖(Maven) 确保你的 `pom.xml` 中包含以下依赖: ```xml <dependencies> <!-- Spring Web(包含RestTemplate) --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.20</version> </dependency> <!-- Jackson Databind(包含ObjectMapper) --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency> </dependencies> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值