如何使用java提取json数据

我无法从java中提取数据。 问题是如何在之后获取name_value_list 。 提前致谢。

{ "id" : "ets7qkt1luugsj828jugs8vuq5", "module_name" : "Users", "name_value_list" : { "mobile_max_list_entries" : { "name" : "mobile_max_list_entries", "value" : null }, "mobile_max_subpanel_entries" : { "name" : "mobile_max_subpanel_entries", "value" : null }, "user_currency_id" : { "name" : "user_currency_id", "value" : "-99" }, . . "user_language" : { "name" : "user_language", "value" : "en_us" }, "user_name" : { "name" : "user_name", "value" : "abcd" }, "user_number_seperator" : { "name" : "user_number_seperator", "value" : "," } } } 

我会说尝试使用谷歌的Gson()进行反序列化。

首先,构建实体(或对象映射)类,如:

 public class MobileMaxListEntry implements Serializable { @Expose @SerializedName("name") private String name; @Expose @SerializedName("name") private String value; //getters / setters } 

为您拥有的每个实体执行此操作。 然后:

 public class ValuesList implements Serializable { @Expose @SerializedName("mobile_max_list_entries") private MobileMaxListEntry mobile_max_list_entries; @Expose @SerializedName("mobile_max_subpanel_entries") private MobileMaxSubpanelEntry mobile_max_subpanel_entries; //getters/setters for everything } 

然后,响应类:

 public class MyResponseClass implements Serializable { @Expose @SerializedName("id") private String objectId; @Expose @SerializedName("module_name") private String moduleName; @Expose @SerializedName("name_value_list") private ValuesList valuesList; //getters / setters for everything } 

然后,最后,在您的代码中:

 Gson gson = new Gson(); String json = "your_json_here"; MyResponseClass deserialized = gson.fromJson(json, MyResponseClass.class); 

如果出现错误,请尝试为每个类添加默认的空构造函数。

只需从JSON字符串中提取Map的数据即可。

GSON库

 Type type = new TypeToken>() {}.getType(); Map data = new Gson().fromJson(jsonString, type); System.out.println(data.get("name_value_list")); 

jackson库

 ObjectMapper mapper = new ObjectMapper(); TypeReference> typeRef = new TypeReference>() {}; Map data = mapper.readValue(reader, typeRef); System.out.println(data.get("name_value_list")); 

您可以创建一个POJO类,它是JSON字符串的精确副本,可以使用GSON在Java对象中进行转换。

示例代码:

 class MobileDetail{ private NameValueList name_value_list; private String module_name; private String id; } class NameValueList{ private NameValue mobile_max_list_entries; private NameValue mobile_max_subpanel_entries; private NameValue user_currency_id; private NameValue user_language; private NameValue user_name; private NameValue user_number_seperator; } class NameValue{ private String name; private String value; } ... MobileDetail data =new Gson().fromJson(reader, MobileDetail.class); System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));