Я не могу извлечь данные из этого в java. Проблема в том, что после этого будет вызываться имя_валюта_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" : ","
}
}
}
Я бы попробовал использовать google 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);
Если вы получили сообщение об ошибке, попробуйте добавить стандартные конструкторы по умолчанию для каждого класса.
Просто извлеките данные в Map<String,Object>
из строки JSON.
Type type = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> data = new Gson().fromJson(jsonString, type);
System.out.println(data.get("name_value_list"));
ObjectMapper mapper = new ObjectMapper();
TypeReference<Map<String, Object>> typeRef = new TypeReference<Map<String, Object>>() {};
Map<String, Object> data = mapper.readValue(reader, typeRef);
System.out.println(data.get("name_value_list"));
Вы можете создать класс POJO, который является точной копией строки JSON и может преобразовать ее в объект Java с помощью GSON.
образец кода:
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));