You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Spring Boot生成指定格式的JSON?求参考Spring Boot应用示例

如何用Spring Boot生成指定结构的JSON

要生成你需要的JSON格式,核心是让Java对象结构和目标JSON一一对应,Spring Boot默认用Jackson完成对象到JSON的序列化,下面是完整的参考实现:

1. 定义匹配JSON结构的实体类

先创建两个实体类,分别对应JSON里的歌手和专辑对象:

专辑实体(Album)

对应JSON中的专辑子对象:

import lombok.Data;

// @Data注解自动生成getter、setter、toString等方法,不用手动写
@Data
public class Album {
    private String title;
    private String artist;
    private int ntracks;
}

如果你不想用Lombok,直接手动添加所有字段的getter、setter和无参/有参构造方法即可。

歌手实体(Artist)

对应JSON中的顶层歌手对象:

import lombok.Data;
import java.util.List;

@Data
public class Artist {
    private String name;
    private List<Album> albums;
}

2. 编写REST控制器返回数据

创建一个简单的控制器,构造好测试数据后返回,Spring会自动把对象序列化为JSON:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class ArtistController {

    @GetMapping("/artists")
    public List<Artist> getArtists() {
        // 构造歌手foo的专辑
        Album fooAlbum1 = new Album();
        fooAlbum1.setTitle("album_one");
        fooAlbum1.setArtist("foo");
        fooAlbum1.setNtracks(12);

        Album fooAlbum2 = new Album();
        fooAlbum2.setTitle("album_two");
        fooAlbum2.setArtist("foo");
        fooAlbum2.setNtracks(15);

        Artist foo = new Artist();
        foo.setName("foo");
        foo.setAlbums(List.of(fooAlbum1, fooAlbum2));

        // 构造歌手bar的专辑
        Album barAlbum1 = new Album();
        barAlbum1.setTitle("foo walks into a bar");
        barAlbum1.setArtist("bar");
        barAlbum1.setNtracks(12);

        Album barAlbum2 = new Album();
        barAlbum2.setTitle("album_song");
        barAlbum2.setArtist("bar");
        barAlbum2.setNtracks(17);

        Artist bar = new Artist();
        bar.setName("bar");
        bar.setAlbums(List.of(barAlbum1, barAlbum2));

        // 返回歌手列表
        return List.of(foo, bar);
    }
}

3. 测试接口

启动Spring Boot应用后,访问http://localhost:8080/artists,就能得到和你需求完全一致的JSON响应:

[
  {
    "name": "foo",
    "albums": [
      {
        "title": "album_one",
        "artist": "foo",
        "ntracks": 12
      },
      {
        "title": "album_two",
        "artist": "foo",
        "ntracks": 15
      }
    ]
  },
  {
    "name": "bar",
    "albums": [
      {
        "title": "foo walks into a bar",
        "artist": "bar",
        "ntracks": 12
      },
      {
        "title": "album_song",
        "artist": "bar",
        "ntracks": 17
      }
    ]
  }
]

额外提示

  • 确保你的项目引入了spring-boot-starter-web依赖,它默认包含了Jackson序列化所需的所有包,无需额外引入。
  • 如果需要自定义JSON格式(比如字段重命名、忽略空字段),可以用Jackson的注解,比如@JsonProperty("custom_name")指定字段名,@JsonIgnore忽略某个字段。

内容的提问来源于stack exchange,提问作者saran sanjeevi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:38:44