反序列化json时跳过根元素

Mat*_*ski 13 java json gson

我应该如何反序列化以下JSON以跳过根元素并仅解析此JSON的内部部分.我想避免创建额外的第3类Root,其中只包括MapWrapper字段.

{
    "root": {
        "language": "en",
        "map": {
            "k1": {
                "name": "n1",
            },
            "k2": {
                "name": "n2",
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我想只有这两个类:

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

class MyMapEntry {
    String name;
}
Run Code Online (Sandbox Code Playgroud)

Byt*_*ter 10

你可以使用GSONLibrary.

下面的代码将解决您的问题.

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);
Run Code Online (Sandbox Code Playgroud)