如何在 Java 中将 class 显示为 JSON 响应?

How to display class as a JSON response in Java?

目前我正在处理 spring 项目,我想将 class 显示为 JSON 响应。以下是 class 模板和其他相关详细信息。

public class 国家 {

@Column(name = "name")
private String name;

@Id
@Column(name = "code")
private String Code;

   //Getters & Setters ... 
}

当前回复:

[{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}]

预期响应:

[ { "countries" : [{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}], "status" : "ok", "message":"success", etc..etc...}]

除了状态和消息,它也可以是一些数组列表。

您需要创建 class 包含列表并使用 ResponseEntity

public class Foo {

  private List<Country> countries;

  // get/set...
}

@Controller
public class MyController {
    @ResponseBody
    @RequestMapping(value = "/foo", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
    public ResponseEntity<Foo> foo() {
        Foo foo = new Foo();

        Country country = new Country();

        foo.getCountries().add(country);

        return ResponseEntity.ok(foo);
    }
}

您应该创建另一个对象,例如调用 Countries 如下所示:

public class Countries {
    private List<Country> countries;

    // getters & setters
}

或:

public class Countries {
    private Country[] countries;

    // getters & setters
}

Country 对象的列表或数组将映射到您预期的 {"countries" : [{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}]},因为 JSON {} 指代某个对象而 [] 指代 [=22] =] 在 Java 代码中。

其实你也可以使用jackson库来实现

//创建ObjectMapper的obj

ObjectMapper mapper = new ObjectMapper();

//从映射器中获取Json字符串值

String json = mapper.writeValueAsString(obj)  

然后 return 这个 json 字符串在你的控制器方法中。

这样做的好处是,您还可以使用 @JsonIgnore 注释忽略 POJO 中用于 JSON 转换的某些字段(放此注释位于您要忽略的字段的 getter 之前)(不确定您是否可以从 Spring ResponseEntity 执行相同的操作。

注:如有不对请指正