如何使用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
jackson库
ObjectMapper mapper = new ObjectMapper(); TypeReference
您可以创建一个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));