我为我的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);
}
}
答案 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);