使用java解析JSON:动态密钥

时间:2015-02-17 17:20:35

标签: java json parsing gson

我需要在java中创建一些带有动态字段的JSON响应。以下是我想要返回的JSON响应的示例:

{
    "success": true,
    "completed_at": 1400515821,
    "<uuid>": {
        type: "my_type",
        ...
    }, 
    "<uuid>": {
        type: "my_type",
        ...
    }
}

“success”和“completed_at”字段易于格式化。如何格式化字段?什么是相应的java对象?

基本上我想使用2个java对象:

public class ApiResponseDTO {

    private boolean success;
    private DateTime completedAt;

    ...
}

public class AuthenticateResponseDTO extends ApiResponseDTO {

    public List<ApplianceResponseDTO> uuids = new     ArrayList<ApplianceResponseDTO>();

}

这些java对象与预期的JSON格式不对应。如果我可以改变JSON格式以获得列表,它将起作用,但我无法改变它。

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用javax.json库,特别是JsonObjectBuilderJsonArrayBuilder将数据按到JSON表单中。您可能希望嵌套一个toJson()方法的几个级别,它将为您提供您正在寻找的字符串表示,或者您想要的JsonObject / JsonArray。像这样:

JsonArray value = null;
JsonArrayBuilder builder = Json.createArrayBuilder();
for (ApplianceResponseDTO apr : uuids) {
    builder.add(apr.toJson());
}
value = builder.build();
return value;