JSON数组读取第一个元素?

时间:2014-02-23 15:49:18

标签: java arrays json

我为我的Twitch提供了一个JSON数组跟随用户检查器。 我想只获得第一个日期(因为这是最新的日期) 在数组之外,但每次执行代码时,只需交换到下一个“日期”。

我该如何改变?

代码;

import org.jibble.pircbot.*;
import org.json.JSONException;
import org.json.simple.*;
import org.json.simple.parser.*;
import org.w3c.dom.ranges.RangeException;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.*;



////////////////////////////////////////////////////////////////////////////////////
                // Twitch Follower Ticker
                ////////////////////////////////////////////////////////////////////////////////////

                private String readAll4(Reader rd) throws IOException {
                    StringBuilder sb = new StringBuilder();
                    int cp;
                    while ((cp = rd.read()) != -1) {
                      sb.append((char) cp);
                    }
                    return sb.toString();
                  }

                  public JSONObject readJsonFromUrl4(String url) throws IOException, JSONException {
                    InputStream is = new URL(url).openStream();
                    try {
                      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                      String jsonText = readAll4(rd);
                      JSONObject json = new JSONObject(jsonText);
                      return json;
                    } finally {
                      is.close();
                    }
                  }

                  public void FollowerTicker() throws IOException, JSONException {
                    json = readJsonFromUrl2("https://api.twitch.tv/kraken/channels/"+ownerchannel+"/follows");

                    JSONArray followerarray = json.getJSONArray("follows");

                    for(int n = 0; n < followerarray.length(); n++)
                    {
                        JSONObject followertime = followerarray.getJSONObject(n);
                        String ftime = followertime.getString("created_at");


                        int maxfollows = json.getInt("_total");


                    System.out.println("Total Follows : "+maxfollows);
                    System.out.println("Loop Follow Date: "+ftime);

                    }
              }

编辑的代码;

                private String readAll4(Reader rd) throws IOException {
                    StringBuilder sb = new StringBuilder();
                    int cp;
                    while ((cp = rd.read()) != -1) {
                      sb.append((char) cp);
                    }
                    return sb.toString();
                  }

                  public JSONObject readJsonFromUrl4(String url) throws IOException, JSONException {
                    InputStream is = new URL(url).openStream();
                    try {
                      BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                      String jsonText = readAll4(rd);
                      JSONObject json = new JSONObject(jsonText);
                      return json;
                    } finally {
                      is.close();
                    }
                  }

                  public void FollowerTicker() throws IOException, JSONException {
                    json = readJsonFromUrl2("https://api.twitch.tv/kraken/channels/"+ownerchannel+"/follows");

                    JSONArray followerarray = json.getJSONArray("follows");

//                  for(int n = 0; n < followerarray.length(); n++)
                    {
                        JSONObject followertime = followerarray.getJSONObject(0);
                        String ftime = followertime.getString("created_at");
                        String fname = followertime.getJSONObject("user").getString("display_name");  
                        int maxfollows = json.getInt("_total");


                    System.out.println("Total Follows zurzeit: "+maxfollows);
                    System.out.println("Neustes Follower - Datum: "+ftime);
                    System.out.println("Neuster Follower Name: "+fname);

                    }
              }

2 个答案:

答案 0 :(得分:9)

不要循环并做类似的事情:

private static int FIRST_ELEMENT = 0;

public static void main(String[] args) {
    JSONArray json = new JSONArray("[{\"Hello1\":\"1\"},{\"Hello2\":\"2\"}]");

    if (json.length() > 0) {
        System.out.println("First: " + json.getJSONObject(FIRST_ELEMENT).toString());// parse the date instead of toString()
    }
}

我不确定这是否正是你想要的;)

答案 1 :(得分:1)

免费获得更短的答案!

JSONObject first =
  new JSONArray(
    "[{\"Key1\":\"Value1\"}]").
  getJSONObject(0);