簡體   English   中英

如何從Java中的URL獲取JSON數據?

[英]How to get JSON data from an url in Java?

我已經簽出了很多頁面,但是大多數教程和腳本都使用這種JSON輸出類型返回錯誤代碼。 那么,我如何能夠從Java中的JSON中提取數據?

[
  {
    "user":{"id":"1","username":"user1"},
    "item_name":"item1",
    "custom_field":"custom1"
  },
  {
    "user":{"id":"2","username":"user2"},
    "item_name":"item2",
    "custom_field":"custom2"
  },
  {
    "user":{"id":"3","username":"user3"},
    "item_name":"item3",
    "custom_field":"custom3"
  }
]

如果要使用Gson,則首先聲明用於容納每個元素和子元素的類:

public class MyUser {
  public String id;
  public String username;
}

public class MyElement {
  public MyUser user;
  public String item_name;
  public String custom_field;
}

然后,聲明一個最外面的元素的數組(因為在這種情況下,JSON對象是一個JSON數組),並對其進行分配:

MyElement[] data = gson.fromJson (myJSONString, MyElement[].class);

然后,您只需訪問data元素。

要記住的重要一點是,您聲明的屬性的名稱和類型應與JSON字符串中的屬性名稱和類型匹配。 例如“ id”,“ item_name”等。

您可以嘗試JSON簡單
http://code.google.com/p/json-simple/

例:

JSONParser jsonParser = new JSONParser();
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString);

for (int i = 0; i < jsonArray.size(); i++) {
    JSONObject obj = (JSONObject) jsonArray.get(i);
    //Access data with obj.get("item_name")
}

只需注意檢查是否為空/在進行鑄造等時要小心。

如果您嘗試在Java中序列化/反序列化json,我建議您使用Jackson。 http://jackson.codehaus.org/

下載Jackson后,您可以將JSON字符串反序列化為與JSON中的對象匹配的對象。

Jackson提供了可以附加到您的類的注釋,這使得反序列化非常簡單。

暫無
暫無

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

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