从JSON请求获取数据

时间:2019-03-05 02:48:59

标签: java json

我正在尝试从JSON请求访问某些数据,但是我无法获得足够的数据来获取所需的信息。

我使用的网站:https://tibiadata.com/doc-api-v2/guilds/

很好的例子是“胫骨的一个特定行会”下的1。

我要获取的信息是公会->成员->字符下的名称/状态。

这是我到目前为止所做的:

JSONObject root = new JSONObject(sb.toString()); //Get the info into root
JSONObject guildArray = root.getJSONObject("guild"); //Get the info under "guild"
JSONArray members = guildArray.getJSONArray("members"); //Get the info unders members

此时

System.out.println(members.get(0));

会给

{"characters":[{"nick":"Coffee time","vocation":"Elite Knight","level":336,"joined":"2017-12-27","name":"Pelli Moulante","status":"online"}],"rank_title":"Leader"}

所以我唯一想念的部分是进入“字符”以获取名称/状态信息。

知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

members.get(0)将返回成员JsonObject

中的第一个JSONArray
{
    "rank_title": "Ivory Guardian",
    "characters": [
      {
        "name": "Tanthalas the Fourth",
        "nick": "Legendary naab",
        "level": 138,
        "vocation": "Elder Druid",
        "joined": "2008-06-17",
        "status": "offline"
      }, {
        "name": "Bubbax",
        "nick": "Deco man",
        "level": 230,
        "vocation": "Elder Druid",
        "joined": "2014-08-29",
        "status": "offline"
      },
    ]
  }

从中获取由characters组成的JSONArrayJsonObject,然后使用for循环迭代JSONArray

for(Object obj : members.getJsonObject(0).getJSONArray("characters")) {

           JSONObject p = (JSONObject) obj;
           System.out.println(p.get("name");
           System.out.println(p.get("status");
           }