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

问题描述:

目前我正在处理spring项目,我想将类显示为JSON响应。以下是班级模板和其他相关细节。如何在Java中将类显示为JSON响应?

公共类国家{

@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...}]

代替状态和消息,也可能是一些阵列列表到O操作。

您需要创建类包含列表并使用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 
} 

国家对象列表或数组将映射到你的预期{"countries" : [{"name":"Andorra","code":"AD"},{"name":"United Arab Emirates","code":"AE"}]},因为JSON {}是指一些对象,并[]指列出/ Java代码中的数组。

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

//创建的ObjectMapper

ObjectMapper mapper = new ObjectMapper(); 

OBJ //从映射器

String json = mapper.writeValueAsString(obj) 

获取JSON字符串值,然后在你的控制器方法返回此JSON字符串。

使用这个的好处是,你还可以使用@JsonIgnore注释(您想忽略的领域,吸气之前将这个注释)(如果不知道忽略POJO的JSON转换某些领域你可以从春ResponseEntity做同样的

注:请纠正我,如果我错了,任何地方