使用GSON获取JSON密钥名称

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

{ "bjones": { "fname": "Betty", "lname": "Jones", "password": "ababab", "level": "manager" } } 

我的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" 

编辑:我正在尝试用Gson将“bjones”插入newUser.username,对不起澄清

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

 JsonObject result = p.parse(file).getAsJsonObject(); Set> entrySet = result.entrySet(); for(Map.Entry entry : entrySet) { User newUser = gson.fromJson(p.getAsJsonObject(entry.getKey()), User.class); newUser.username = entry.getKey(); //code... } 

使用keySet()直接排除迭代的必要性:

 ArrayList objectKeys = new ArrayList( myJsonObject.keySet()); 

你的JSON相当简单,所以即使是手动排序的方法(比如为类型创建字符串等)也能正常工作。

对于复杂的JSON(JSON中有许多嵌套的复杂对象和其他复杂对象的列表),您可以使用http://www.jsonschema2pojo.org/等工具为JSON创建POJO 。

然后就是:

 final Gson gson = new Gson(); final MyJsonModel obj = gson.fromJson(response, MyJsonModel.class); // Just access your stuff in object. Example System.out.println(obj.getResponse().getResults().get(0).getId());