Json数据格式

json比较可读,通过键值对返回。实现通常有两种方式:一种是自己来构造,也就是用一个对象存储数据,在最后输出时将其json字符串化;第二种是使用 @RestController 注解实现json数据返回。

第一种

导入依赖坐标:

XML 复制代码
        <dependency>
<!--            json-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </dependency>

实体类:

java 复制代码
public class Pet {
    private Long id;
    private String name;
    private int age;
    private String color;
    private String description;

    public Pet(Long id, String name, int age, String color, String description) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.color = color;
        this.description = description;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

创建一个Controller进行测试:

java 复制代码
@RestController
@RequestMapping("/test_json")
public class TestJson {
    @Autowired
    public Testjson testjson;
    @RequestMapping("/pet")
    public Pet getPet(){
        return new Pet(1L,"团团",2,"black","a cut panda");
    }
    @RequestMapping("/petList")
    public List<Pet> getPetList(){
        List<Pet> pets = new ArrayList<>();
        pets.add(new Pet(2L,"小狗",3,"write","a dog"));
        pets.add(new Pet(1L,"小猪",2,"pink","a pig"));
        return pets;
    }

}

完成。

第二种

这里使用第三方代替实现,此方法比较粗糙不推荐使用,例如选择 alibaba 开源的 faskjson。依赖配置:

XML 复制代码
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.25</version>

测试提供的实体类:

java 复制代码
package org.example.pojo;

public class User {
    private String name;
    private String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

测试类:

java 复制代码
package org.example.service;

import com.alibaba.fastjson.JSON;
import org.example.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
@Component
public class Testjson {
    public String objectToJson(){
        //单个Java 对象
        User user = new User("tfboys","2333");
        String userJsonStr = JSON.toJSONString(user);
        System.out.println("java类转json字符串为:"+userJsonStr);
        //多个java 对象
        User user1 = new User("gameboy","2334");
        User user2 = new User("steatboy","456789");
        List<User> users = new ArrayList<>();
        users.add(user1);
        users.add(user2);
        String ListUserJson = JSON.toJSONString(users);
        System.out.println("List<Object> 转 json字符串是:"+ListUserJson);
        jsonToObject();
        return ListUserJson.toString();
    }
    public void jsonToObject(){
        String jsonStr1 = "{'password':'123456','name':'dmeget'}";
        User user = JSON.parseObject(jsonStr1, User.class);
        System.out.println("json字符串转简单java对象:"+user.toString());
    }
}

这里使用了两个比较重要的方法:一个是把对象json化的toJsonString方法,另一个是把json对象化的parseObject。

相关推荐
哈基米喜欢哈哈哈3 分钟前
低版本的JVM遇到高版本的class字节码是否会报错
java·jvm
235167 分钟前
【并发编程】详解volatile
java·开发语言·jvm·分布式·后端·并发编程·原理
洛小豆34 分钟前
java 中 char 类型变量能不能储存一个中文的汉字,为什么?
java·后端·面试
爱吃烤鸡翅的酸菜鱼40 分钟前
从数据库直连到缓存预热:城市列表查询的性能优化全流程
java·数据库·后端·spring·个人开发
一只学java的小汉堡1 小时前
Java 面试高频题:HashMap 与 ConcurrentHashMap 深度解析(含 JDK1.8 优化与线程安全原理)
java·开发语言·面试
huohaiyu2 小时前
Hashtable,HashMap,ConcurrentHashMap之间的区别
java·开发语言·多线程·哈希
信奥卷王3 小时前
[GESP202503 五级] 原根判断
java·数据结构·算法
心勤则明3 小时前
Spring AI 会话记忆实战:从内存存储到 MySQL + Redis 双层缓存架构
人工智能·spring·缓存
小咕聊编程3 小时前
【含文档+源码】基于SpringBoot的过滤协同算法之网上服装商城设计与实现
java·spring boot·后端
Zz_waiting.3 小时前
Spring 原理
java·spring·spring自动管理