gpt4 book ai didi

json - Spring REST Controller 返回空的 JSON。可迭代的数据结构。为什么?

转载 作者:行者123 更新时间:2023-12-03 18:17:24 24 4
gpt4 key购买 nike

我意识到有人提出并关闭了一个非常相似的问题,因为它不够具体,也没有说明结果。 Closed Off Topic

问题:从 REST Controller 返回的 JSON 为空。经过验证的数据存在并且在 Iterable 中。

预期结果:将返回一个包含对象的 JSON 数组。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.codeexcursion</groupId>
<organization>
<name>Chris Lynch</name>
</organization>
<version>1.00.000</version>
<artifactId>work-tracking</artifactId>
<packaging>jar</packaging>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>


<name>Work Tracking</name>

<inceptionYear>2017</inceptionYear>

<developers>
<developer>
<id />
<name>Chris Lynch</name>
<email>chrislynch42@yahoo.com</email>
<timezone>-4</timezone>
<roles>
<role>Chief cook and bottle washer.</role>
</roles>
</developer>
</developers>

<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.10.19</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.5.10.RELEASE</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>

<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.13.1.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>


</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.codeexcursion.Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>

</project>

实体
//Package and import Omitted

@Entity
public class Category {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private Long parentId;

private String title;

private String description;

protected Category() {
}

public Category(final String title, String description) {
this(0L, title, description);
}

public Category(Long parentId, final String title, String description) {
if (parentId == null) {
parentId = 0L;
}
if (title == null || title.trim().isEmpty()) {
throw new IllegalArgumentException("Title may not be null or empty.");
}
if (description == null) {
description = "";
}
this.parentId = parentId;
this.title = title;
this.description = description;
}

@Override
public String toString() {
return "id = " + id + "; parentId=" + parentId + "; title=" + title + "; description=" + description;
}


}

资源
//Package and import Omitted

@Repository
public interface CategoryCRUD extends CrudRepository<Category, Long> {
List<Category> findByTitle(String title);
}

休息 Controller
//Package and import Omitted

@RestController
@RequestMapping("/categories")
public class CategoryController {

@Autowired
private CategoryCRUD categoryCRUD;


@RequestMapping(value = "", method = RequestMethod.GET)
public @ResponseBody Iterable<Category> list() {
System.out.println("findAll");
categoryCRUD.findAll().forEach((category) -> {
System.out.println("category=" + category);
});
return categoryCRUD.findAll();
}

private List<Category> findAll() {
final Iterable<Category> data = categoryCRUD.findAll();
List<Category> returnList = new ArrayList<>();
data.forEach(returnList::add);
return returnList;
}


}

最佳答案

我在封闭的帖子中找到了一个暗示但没有详细说明的答案。我需要向我的实体添加 setter/getter 。我希望 JPA/Spring 自动添加 getter 和 setter。下面解决了我的问题。

实体

//Package and imports omitted
@Entity
public class Category {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private Long parentId;

private String title;

private String description;

protected Category() {
}

public Category(final String title, String description) {
this(0L, title, description);
}

public Category(Long parentId, final String title, String description) {
if (parentId == null) {
parentId = 0L;
}
if (title == null || title.trim().isEmpty()) {
throw new IllegalArgumentException("Title may not be null or empty.");
}
if (description == null) {
description = "";
}
this.parentId = parentId;
this.title = title;
this.description = description;
}

@Override
public String toString() {
return "id = " + id + "; parentId=" + parentId + "; title=" + title + "; description=" + description;
}

public Long getId() {
return id;
}

public Long getParentId() {
return parentId;
}

public String getTitle() {
return title;
}

public String getDescription() {
return description;
}

}

欢迎更好的答案。

关于json - Spring REST Controller 返回空的 JSON。可迭代的数据结构。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49117622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com