简体   繁体   中英

Parsing JSON with java : dynamic keys

I need to create a JSON response with some dynamic fields in java. Here is an example of the JSON response I want to return :

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

The "success" and the "completed_at" fields are easy to format. How can I format the fields? What would be the corresponding java object?

Basically I want to work with 2 java objects :

public class ApiResponseDTO {

    private boolean success;
    private DateTime completedAt;

    ...
}

and

public class AuthenticateResponseDTO extends ApiResponseDTO {

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

}

These java objects don't correspond to the expected JSON format. It would work if I could change the JSON format to have a list, but I can't change it.

Thanks a lot!

You can massage your data into JSON form using the javax.json library, specifically the JsonObjectBuilder and the JsonArrayBuilder . You'll probably want to nest a few levels of a toJson() method which will either give you the string representation you're looking for, or the JsonObject/JsonArray you desire. Something like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM