如何将嵌套的JSON对象转换为数组Spring启动?



我目前正在构建一个React/Springboot应用程序,我的目标是从数组中返回单个对象,但对象在React中无效,有人知道我如何从JSON数组内的对象中提取数据,或者如果有一种方法我可以放在控制器中,将数组内的对象格式化为迷你数组吗?

{
- drinks: {
id: 1,
drinkId: null,
drinkName: "Bloody Mary",
glassType: "Highball",
strAlcoholic: "Alcoholic",
drinkDetails: "A Bloody Mary is a cocktail containing vodka, tomato juice, and other 
spices and flavorings including Worcestershire sauce, hot sauces, garlic, herbs, 
horseradish, celery, olives, salt, black pepper, lemon juice, lime juice and celery 
salt.",
720x720-primary-28cf1aaa79d0424d951901fcc0a42e91_xmhgw9.jpg"
}
}

这是我的控制器为上述json数据:

@GetMapping(path = "all/{id}")
@CrossOrigin
public @ResponseBody Map<String, Optional<Drink>> getById(@PathVariable Long id){
Map<String, Optional<Drink>> response = new HashMap<>();
response.put("drinks", drinkRepository.findById(id));
return response;
}

您可以使用下面的代码来做同样的事情,您可以直接返回您的对象,spring将您的Java对象转换为JSON。默认情况下,Jackson习惯于将Object解析为JSON。您只需要将类标记为@RestController并原样返回对象。在Spring Boot的文章中阅读这个返回JSON对象作为响应的更多细节,这个文章有更多的细节。同时,确保你选择了start.spring.io中的Spring Web依赖项,这样你就会得到RestController,否则,将依赖项添加到你的pom文件.

代码:

package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
class User {
String name, age, job;
public User(String name, String age, String job) {
this.name = name;
this.age = age;
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
@GetMapping("/hello")
public User greetings() {
return new User("User", "18", "worker");
}
}

网页输出:以上代码在客户端的输出

要记住的要点:在你的类中使用getter和setter,因为Jackson在内部使用它们来获取你的对象数据。

最新更新