为了账号安全,请及时绑定邮箱和手机立即绑定

在 Spring Boot 应用程序中解析 JSON

在 Spring Boot 应用程序中解析 JSON

温温酱 2022-10-12 15:33:07
我很难想出一种解析这种 JSON 的方法。在我的应用程序中获得此响应后,我需要能够分别访问数据和消息。{    "data": [        {            "email": "eskaferas@gmail.com",            "firstName": "Seras",            "lastName": "Meras"        },        {            "email": "Soras@gmail.com",            "firstName": "Oras",            "lastName": "Moras"        },        {            "email": "bzbzb@gmail.com",            "firstName": "hello",            "lastName": "bye"        },        {            "email": "lrc@gmail.com",            "firstName": "Seras",            "lastName": "Meras"        }    ],    "message": "Success"}任何人都可以建议一种专门用于 Spring Boot 的方法吗?或者是 Spring boot 中用来解析这种 JSON 类型的常用方法。谢谢你。编辑我的主要问题是 Spring Boot 可以使用什么工具,如果我使用 Jackson,我的 POJO 类会是什么样子。会是这样吗?:public class testPojo {  Users[] users;  String message;}
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

Pojo 类将如下所示:


public class TestPojo{


    private Users[] data;

    private String message;


    public Users[] getData() {

        return data;

    }


    public void setData(Users[] data) {

        this.data = data;

    }


    public String getMessage() {

        return message;

    }


    public void setMessage(String message) {

        this.message = message;

     }

}


class Users {

    private String email;

    private String firstName;

    private String lastName;

    public String getEmail() {

        return email;

    }

    public void setEmail(String email) {

        this.email = email;

    }

    public String getFirstName() {

        return firstName;

    }

    public void setFirstName(String firstName) {

        this.firstName = firstName;

    }

    public String getLastName() {

        return lastName;

    }

    public void setLastName(String lastName) {

        this.lastName = lastName;

    }

}

在控制器的方法参数中使用 @RequestBody。


@RestController

class AbcController{


    PostMapping("/api")

    public String create(@RequestBody TestPojo test){

    // you can acess your json in test object

    return "done"

    } 

}


查看完整回答
反对 回复 2022-10-12
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

import com.fasterxml.jackson.annotation.JsonAutoDetect;

import com.fasterxml.jackson.databind.DeserializationFeature;

import com.fasterxml.jackson.databind.MapperFeature;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;

import com.fasterxml.jackson.databind.SerializationFeature;

import lombok.Getter;

import lombok.Setter;

import org.junit.Test;

import org.springframework.context.annotation.Bean;


import java.io.IOException;

import java.util.List;


public class TestJUnit {


    @Test

    public void exec() {

       String json = "{" +

               "    \"data\": [" +

               "        {" +

               "            \"email\": \"eskaferas@gmail.com\"," +

               "            \"firstName\": \"Seras\"," +

               "            \"lastName\": \"Meras\"" +

               "        }," +

               "        {" +

               "            \"email\": \"Soras@gmail.com\"," +

               "            \"firstName\": \"Oras\"," +

               "            \"lastName\": \"Moras\"" +

               "        }," +

               "        {" +

               "            \"email\": \"bzbzb@gmail.com\"," +

               "            \"firstName\": \"hello\"," +

               "            \"lastName\": \"bye\"" +

               "        }," +

               "        {" +

               "            \"email\": \"lrc@gmail.com\"," +

               "            \"firstName\": \"Seras\"," +

               "            \"lastName\": \"Meras\"" +

               "        }" +

               "    ]," +

               "    \"message\": \"Success\"" +

               "}".replaceAll(" ", "");


        ObjectMapper mapper = new ObjectMapper();


        try {

            JsonParser parser = mapper.readValue(json, JsonParser.class);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }


    @Getter

    @Setter

    private static class JsonParser {

        private List<Data> data;

        private String message;

    }


    @Getter

    @Setter

    private static class Data{

        private String email;

        private String firstName;

        private String lastName;

    }


//    @Configuration

    private static class Configuration{

    @Bean

    public ObjectMapper objectMapper(){

        ObjectMapper mapper = new ObjectMapper();

        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);

        mapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);

        mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

        mapper.setVisibility(mapper.getSerializationConfig()

                .getDefaultVisibilityChecker().withFieldVisibility(JsonAutoDetect.Visibility.ANY)

                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)

                .withSetterVisibility(JsonAutoDetect.Visibility.NONE)

                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE));

        mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);

        mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);

        return mapper;

    }

    }

}


查看完整回答
反对 回复 2022-10-12
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号