Mateusz Chromiński Mateusz Chromiński - 3 months ago 47
Java Question

Skip root element while deserializing json

How should I deserialize following JSON to skip root element and parse just the inner part of this JSON. I'd like to avoid creating additional, 3rd class

Root
, which would include only
MapWrapper
field.

{
"root": {
"language": "en",
"map": {
"k1": {
"name": "n1",
},
"k2": {
"name": "n2",
}
}
}
}


So I'd like to have only these two classes:

class MapWrapper {
private String language;
private Map<String, MyMapEntry> map;
}

class MyMapEntry {
String name;
}

Answer

you can use GSON Library for this.

Below code will solve your problem.

public class ConvertJsonToObject {

    private static Gson gson = new GsonBuilder().create();

    public static final <T> T getFromJSON(String json, Class<T> clazz) {
        return gson.fromJson(json, clazz);
    }

    public static final <T> String toJSON(T clazz) {
        return gson.toJson(clazz);
    }
}

String json; // your jsonString
Map<String,Object> r = ConvertJsonToObject.getFromJSON(json,Map.class);
String innerJson = ConvertJsonToObject.toJson(r.get("root"));
MapWrapper _r = ConvertJsonToObject.getFromJSON(innerJson,MapWrapper.class);
Comments