簡體   English   中英

使用GSON在JAVA中解析JSON

[英]Parsing JSON in JAVA with GSON

我正在嘗試使用以下結構解析帶有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

將訂單更改為Map (HashMap)

private Map<String, Orders> orders;

Orders

public class Orders {

    private String idOrder;
    private String price;

}

這應按預期解析Json。

這個問題有一個類似的方法,但不使用示例中的類映射

為什么不這樣做:

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());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM