在Spring Boot中使用JsonParser解析JSON

x33g5p2x  于2022-10-04 转载在 Spring  
字(2.6k)|赞(0)|评价(0)|浏览(965)

在本教程中,我们将学习如何在Spring Boot中使用**org.springframework.boot.json.JsonParser解析JSON数据。

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

一个更复杂的例子包括解析一组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++;
    }
  }
}

相关文章

微信公众号

最新文章

更多