当前位置: 首页 > 知识库问答 >
问题:

@RESTController和@GetMapping不返回简单Hello World列表中的JSON数组

龙毅
2023-03-14

我正在使用Spring boot试图通过@RESTController和@GetMapping获得JSON响应,但是本地主机上的JSON并不支持它。这是我的密码。有人能修好这个吗?

@SpringBootApplication
@RestController
public class DemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}
    @GetMapping
public List<Employee> hello () {
    return List.of(
            new Employee(
                    1L,
                    "Pedro",
                    "rt.pedrosantos@gmail.com",
                    LocalDate.of(1989, Month.JUNE, 21),
                    32
            )
    );

}

}

下面是我创建的带有setter和getter的“employee”类。

package com.example.employee;

import java.time.LocalDate;

public class Employee {
private Long id;
private String name;
private String email;
private LocalDate dob;
private Integer age;

public Employee() {
}

public Employee(Long id,
                String name,
                String email,
                LocalDate dob,
                Integer age) {
    this.id = id;
    this.name = name;
    this.email = email;
    this.dob = dob;
    this.age = age;
}

public Employee(String name,
                String email,
                LocalDate dob,
                Integer age) {
    this.name = name;
    this.email = email;
    this.dob = dob;
    this.age = age;
}

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 String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public LocalDate getDob() {
    return dob;
}

public void setDob(LocalDate dob) {
    this.dob = dob;
}

public Integer getAge() {
    return age;
}

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

@Override
public String toString() {
    return "Employee{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", email='" + email + '\'' +
            ", dob=" + dob +
            ", age=" + age +
            '}';
}
}

上课到此结束。我不能正确地将代码返回到JSON,我不知道为什么。有人能解释一下吗?

共有1个答案

干浩阔
2023-03-14

编辑:它返回一个JSON。检查浏览器或rest客户端是否配置正确。

前面的回答:请参考以下内容:正如您已经用@RESTController注释的那样,不需要执行显式的json转换。由于您不返回POJO,并且根据您发布的代码,您没有任何getters,因此将其更改为以下内容即可完成工作:

@RequestMapping(value = "hello_world", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
        public List<StringResponse> hello() {
            return List.of(new StringResponse("Hello"),new StringResponse("World"));
        }
    
    }
    
    class StringResponse {
        private String response;
    
        public StringResponse(String s) {
            this.response = s;
        }
    
        public String getResponse() {
            return response;
        }
    
        public void setResponse(String response) {
            this.response = response;
        }
    }

或者使用像GSON这样的库:在Spring Web API中有一种干净的方法将字符串作为json返回?

  @RequestMapping(value = "hello_world", method = RequestMethod.GET,   produces = MediaType.APPLICATION_JSON_VALUE)
    public List<String> hello() {

        Gson gson = new GsonBuilder().create();
        Type type = new TypeToken<List<String>>() {}.getType();
        String json =  "[ \"Hello\", \"World\"]";
        List<String> responseList = gson.fromJson(json, type);
        
        return responseList;
    }
 类似资料:
  • 问题内容: 让 假设我要对列表中每个列表的索引元素求和,例如在矩阵列中添加数字以获得单个列表。我假设数据中的所有列表的长度均相等。 如何遍历列表列表而不会出现索引超出范围错误?也许lambda?谢谢! 问题答案: 您可以尝试以下方法: 这里使用的组合和解压的列表,然后根据自己的索引压缩的项目。然后,您可以使用列表推导来遍历相似索引的组,对其进行求和并返回其“原始”位置。 为了更清楚一点,下面是迭代

  • 我有一个spring boot webapp,我在其中定义了REST API。我将Spring Security性用于REST API安全性。 我已经用RESTController注释了我的控制器类。我最近更新了spring boot,mvc和安全性到最新版本。 我现在看到,在我的负面情况下,在更新之前,它返回json错误响应,但现在在更新之后,它返回html错误响应。 在更新之前,它给出了以下错

  • 我有一个Spring MVC控制器,方法如下: 它位于一个开始如下所示的控制器内部: 我使用的是Spring WebMVC 4.1.3和Jackson 2.4.3。我尝试在RequestMapping中添加一个“produces”属性,表示它应该返回JSON。在本例中,发回的Content-Type属性是“application/json”,但仍然没有引用测试字符串。 我可以通过调用JSON库将J

  • 我有一个在服务器端使用spring boot的系统。我得到了一个错误,我看不到这里发生了什么。 那是我的控制器,其终点如下: 方法compute age返回(显然)人的年龄。问题是:当我使用postman到这条路由时,该方法运行,但我得到一个http错误405。 我已经做了一些关于它的搜索,我没有找到任何解决方案,虽然它看起来很简单。 我真的很感谢任何帮助

  • 我正在构建我的第一个Spring Boot应用程序。但是我不能正确地得到我的requestMapping控制器的回答。 这是我的主要课程: 这是我的RestController: 如果我看一下日志,我可以看到“/hi”映射: 但是当我访问:http:localhost:8080/hi时,我看到了一个空白页面,我期望看到“Hello World”文本。 为什么我得到一个空白页面? ---编辑----

  • 我写了一个简单的Hello World程序: 名为“HelloWorld.java”。然后我使用“javac HelloWorld.java”从cmd编译它,并获得类文件。运行命令“java-Xdiag HelloWorld”后,出现以下错误: 有人知道为什么会这样吗?操作系统是W10,我安装了jdk 11.0.1版<谢谢。