我正在尝试使用具有以下结构的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;}
主要是这样使用的:
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可以这样做吗?
我的意思是,避免创建1000个类,例如_1类
答案 0 :(得分:3)
将订单更改为Map
(HashMap)
private Map<String, Orders> orders;
然后Orders
到:
public class Orders {
private String idOrder;
private String price;
}
这应该按预期方式解析Json。
This question有一个类似的方法,但是在示例中未使用类映射
答案 1 :(得分:0)
为什么不做这样的事情:
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());
}