我正在尝试用GSON解析一个JSON文件,它的结构如下:
{
"state": 0,
"orders": {
"1": {
"idOrder": "1564",
"price": "7.99",
},
"3": {
"idOrder": "4896",
"price": "9.99",
},
"7": {
"idOrder": "4896",
"price": "10.99",
}
}
}
我将类设置为相同的结构(使用setter和getter)
public class myJson {
private int error;
private Orders orders; }
public class Orders {
@SerializedName("1")
private _1 _1;}
public class _1 {
private String idOrder;
private String price;}
在main中,我是这样使用的:
Gson gson = new Gson();
BufferedReader br = new BufferedReader (new FileReader("base.json"));
Json jsonOffline = gson.fromJson(br, myJson.class);
System.out.println("1 - Orderid: " + jsonOffline.getOrders().get1().getidOrder() );
*
和它完美地工作打印:"1 - Orderid: 1564“
*
现在我的问题是,JSON文件中的这些数字(1,3,7)是随机的,可能有很多顺序。有没有办法让我指出一个数字的范围,例如,1-1000,在这种情况下,如果结果不是null,也可以这样做?
我的意思是,为了避免像 _1这样创建1000个类
发布于 2018-09-20 04:40:44
为什么不这样做呢:
public class MyJson {
private int error;
private Map<String, Order> orders;
// getters and setters
}
Order
的定义如下:
public class Order {
private String idOrder;
private String price;
// getters and setters
}
main
方法看起来是这样的:
public static void main(String[] args) throws FileNotFoundException {
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new FileReader("base.json"));
MyJson jsonOffline = gson.fromJson(br, MyJson.class);
System.out.println("1 - Orderid: " + jsonOffline.getOrders().get("1").getIdOrder());
}
发布于 2018-09-20 04:32:03
将订单更改为Map
(HashMap)
private Map<String, Orders> orders;
并将Orders
发送到:
public class Orders {
private String idOrder;
private String price;
}
这应该像预期的那样解析Json。
This question有一种类似的方法,但在示例中没有使用类映射
https://stackoverflow.com/questions/52413612
复制相似问题