#java #json #gson
#java #json #gson
Вопрос:
Попытка проанализировать следующую строку json для объекта Java с помощью gson
{
"entry": "132456",
"product": {
"item": "123456",
"prompts": [
{
"promptId": "1",
"promptNumber": "109",
"promptType": 4,
"promptTypeDesc": "desc1",
"validations": [
{
"minLen": 10,
"maxLen": 10,
"required": true
}
]
},
{
"promptId": "2",
"promptNumber": "110",
"promptType": 4,
"promptTypeDesc": "desc2",
"validations": [
{
"minLen": 12,
"maxLen": 12,
"required": true
}
]
},
{
"promptId": "3",
"promptNumber": "72",
"promptType": 5,
"promptTypeDesc": "desc4",
"validations": [
{
"required": true
}
]
}
]
}
}
У меня есть мои классы Java как
public class Info{
private String entry;
private Product product;
// added setters and getters
/* Product is inner class*/
public static Product {
private String item;
private List<Prompt> prompts;
// added getters and setters
/*Prompt inner class*/
public static Prompt{
private String promptId;
private String promptNumber;
private List<Validation> validations;
// getters and setters
/*Validation inner class*/
public static Validation{
private int maxLen;
private int minLen;
private boolean required;
// added getters and setters
} // end of Validation class
} // end of Prompt class
} // end of Product
} // End of Info
После преобразования я получаю объект Prompt как null.
item = gson.fromJson(response, Info.class);
Может кто-нибудь, пожалуйста, поправьте меня
Ответ №1:
Попробуйте этот JSON:
{
"entry": "132456",
"product":
{
"item": "123456",
"prompts":
[
{
"promptId": "1",
"promptNumber": "109",
"promptType": 4,
"promptTypeDesc": "desc1",
"validations":
[
{
"minLen": 10,
"maxLen": 10,
"required": true
}
]
}
]
}
}
С помощью этого класса Java:
import java.util.List;
public class Info {
private String entry;
private Product product;
public class Product {
private String item;
private List<Prompt> prompts;
public class Prompt {
private String promptId;
private String promptNumber;
private int promptType;
private String promptTypeDes;
private List<Validation> validations;
public class Validation {
private int maxLen;
private int minLen;
private boolean required;
}
}
}
}
Работает как шарм
public static void main(String args[]){
String input = "{"
""entry": "132456","
""product": {"item": "123456","
""prompts":[{"promptId": "1","
""promptNumber": "109","
""promptType": 4,"
""promptTypeDesc": "desc1","
""validations":[{"minLen": 10,"
""maxLen": 10"
","required": true}]}]}}";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Info item = gson.fromJson(input, Info.class);
String jsonOutput = gson.toJson(item);
System.out.println(jsonOutput);
}
Вывод:
run:
{
"entry": "132456",
"product": {
"item": "123456",
"prompts": [
{
"promptId": "1",
"promptNumber": "109",
"promptType": 4,
"validations": [
{
"maxLen": 10,
"minLen": 10,
"required": true
}
]
}
]
}
}
BUILD SUCCESSFUL (total time: 0 seconds)
Комментарии:
1. Просто поместите определение внутреннего класса во внешний класс, чтобы решить проблему?