使用GSON获取JSON密钥名称

Ahm*_*mad 9 java json gson json-deserialization

我有一个JSON数组,其中包含如下对象:

{
    "bjones": {
        "fname": "Betty",
        "lname": "Jones",
        "password": "ababab",
        "level": "manager"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的User类有一个用户名,需要使用JSON对象的密钥.我如何获得JSON对象的密钥?

我现在拥有的是获取所有内容并创建一个新的User对象,但保留用户名为null.这是可以理解的,因为我的JSON对象不包含"username":"value"的键/值对.

Gson gson = new Gson();
JsonParser p = new JsonParser();
JsonReader file = new JsonReader(new FileReader(this.filename));
JsonObject result = p.parse(file).getAsJsonObject().getAsJsonObject("bjones");
User newUser = gson.fromJson(result, User.class);

// newUser.username = null
// newUser.fname = "Betty"
// newUser.lname = "Jones"
// newUser.password = "ababab"
// newUser.level = "manager"
Run Code Online (Sandbox Code Playgroud)

编辑:我正试图用Gson将"bjones"插入newUser.username,对不起澄清

Max*_*jer 19

使用entrySet获取密钥.遍历条目并为每个密钥创建一个用户.

JsonObject result = p.parse(file).getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = result.entrySet();
for(Map.Entry<String, JsonElement> entry : entrySet) {
    User newUser = gson.fromJson(p.getAsJsonObject(entry.getKey()), User.class);
    newUser.username = entry.getKey();
    //code...
}
Run Code Online (Sandbox Code Playgroud)