Json字符串解析到具有多个对象的java对象 [英] Json string parsing to java object with multiple objects
本文介绍了Json字符串解析到具有多个对象的java对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试使用gson将以下json字符串解析为java对象
{
entry:132456 ,
product:{
item:123456,
prompts:[
{
promptId:1,
promptNumber:109,
promptType:4,
promptTypeDesc:desc1,
验证:[
{
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;
私人产品产品;
//添加setter和getters
/ *产品是内部类* /
public static Product {
private String item;
私人列表<提示>提示;
//添加getter和setters
/ *提示内部类* /
public static提示符{
private String promptId;
private String promptNumber;
私人列表<验证>验证;
// getters和setters
/ *验证内部类* /
public static Validation {
private int maxLen;
private int minLen;
需要私有布尔值;
//添加getters和setters
} //结束验证类
} //提示类结束
} //产品结束
} //结束的信息
item = gson.fromJson(response,Info.class);
有人可以请我改正
解决方案
试试这个JSON:
{
entry:132456,
product:
{
item:123456,
prompts:
[
{
promptId :1,
promptNumber:109,
promptType:4,
promptTypeDesc:desc1,
验证:
[
{
minLen:10,
maxLen:10,
required:true
}
]
}
使用这个Java Class:
import java.util.List;
公开课信息{
私人字符串入口;
私人产品产品;
public class Product {
private String item;
私人列表<提示>提示;
公共类提示{
private String promptId;
private String promptNumber;
private int promptType;
private String promptTypeDes;
私人列表<验证>验证;
公共类验证{
private int maxLen;
private int minLen;
需要私有布尔值;
$ p 像一个魅力
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);
字符串jsonOutput = gson.toJson(item);
System.out.println(jsonOutput);
}
输出:
运行:
{
entry:132456,
product:{
item:123456,
prompts:[
{
promptId:1,
promptNumber:109,
promptType:4,
验证:[
{
maxLen:10,
minLen:10,
required:true
}
]
}
]
}
}
建立成功(总时间:0秒)
Trying to parse the following json string to java object using 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
}
]
}
]
}
}
I have my java classes as
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
I am getting Prompt object as null after converting.
item = gson.fromJson(response, Info.class);
Can someone please correct me
解决方案 Try this JSON:
{
"entry": "132456",
"product":
{
"item": "123456",
"prompts":
[
{
"promptId": "1",
"promptNumber": "109",
"promptType": 4,
"promptTypeDesc": "desc1",
"validations":
[
{
"minLen": 10,
"maxLen": 10,
"required": true
}
]
}
]
}
}
With this Java Class:
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;
}
}
}
}
Works like a charm
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);
}
Output:
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)
这篇关于Json字符串解析到具有多个对象的java对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文