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

时间:2015-06-19 18:00:57

标签: java json spring response

目前我正在开发spring项目,我希望将类显示为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...}]

而不是状态和消息,它也可能是一些数组列表。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您应该创建另一个对象,例如名为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 {}引用了某个对象,[]引用了Java代码中的列表/数组。

答案 2 :(得分:0)

实际上你也可以使用jackson库。

//创建ObjectMapper的obj

ObjectMapper mapper = new ObjectMapper();

//从mapper中获取Json字符串值

String json = mapper.writeValueAsString(obj)  

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

使用它的优点是,您还可以使用 @JsonIgnore 注释忽略POJO中的某些字段以进行JSON转换(将此注释放在要忽略的字段的getter之前) (不确定你是否可以从Spring ResponseEntity做同样的事情。

注意:如果我在任何地方都错了,请纠正我。