在本教程中,我们将学习如何在Spring Boot中使用**org.springframework.boot.json.JsonParser解析JSON数据。
在Spring Boot中解析JSON字符串的最简单方法是通过Spring Boot中原有的org.springframework.boot.json API。让我们看一个具体的例子。考虑以下REST服务:https://jsonplaceholder.typicode.com/todos/1
下面是上述JSON。
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
为了解析它,我们可以简单地使用RestTemplate,为该URL请求一个Object。JsonParser则会将JSON文档转换为一个Map(Key,Value)。
package com.example.parsejson;
import java.util.Map;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.json.JsonParser;
import org.springframework.boot.json.JsonParserFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
public class ParsejsonApplication {
public static void main(String[] args) {
SpringApplication.run(ParsejsonApplication.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
String url = "https://jsonplaceholder.typicode.com/todos/1";
RestTemplate restTemplate = new RestTemplate();
String resp = restTemplate.getForObject(url, String.class);
JsonParser springParser = JsonParserFactory.getJsonParser();
Map < String, Object > map = springParser.parseMap(resp);
String mapArray[] = new String[map.size()];
System.out.println("Items found: " + mapArray.length);
int i = 0;
for (Map.Entry < String, Object > entry: map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
i++;
}
};
}
}
下面是运行上述代码时的输出。
Items found: 4
userId = 1
id = 1
title = delectus aut autem
completed = false
要运行上述例子,你不需要任何额外的依赖来解析JSON文件。只要包括网络启动器。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
一个更复杂的例子包括解析一组JSON项目。例如:https://jsonplaceholder.typicode.com/todos/
上述REST服务返回一个数组的项目。为了解析它们,我们将使用JsonParser的parseList方法,如下。
String url = "https://jsonplaceholder.typicode.com/todos/";
RestTemplate restTemplate = new RestTemplate();
String resp = restTemplate.getForObject(url, String.class);
JsonParser springParser = JsonParserFactory.getJsonParser();
List < Object > list = springParser.parseList(resp);
for (Object o: list) {
if (o instanceof Map) {
Map < String, Object > map = (Map < String, Object > ) o;
System.out.println("Items found: " + map.size());
int i = 0;
for (Map.Entry < String, Object > entry: map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
i++;
}
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
内容来源于网络,如有侵权,请联系作者删除!