我在我的Twitch IRC Bot工作,我们遇到了问题。
我们通过twitch API(json)收到很多信息,例如Who follow,dateOf .. viewercounts ..追随者的数量和类似的东西。
使用Follow-Function从整个列表中读取所有名称并将其全部设置到我们的数据库中。首先我们尝试只读取all和system.output它们但我们总是得到错误:org.json.JSONException:找不到JSONArray [100]。
我们注意到“0”也持有一个数组,所以我们将循环设置为0-99,它应该通过添加100+(下一个站点)来更改链接并再次读取JSON。然后它应该继续循环下一个站点。
以下是读取方法的主要代码。
我们尝试过调试,但我们找不到解决方案x(
MyBot主码代码段:
JSONObject follower = null;
String followername = null;
int listnumber;
offsetvalue = 0;
for(int i = 0; i < TwitchStatus.totalfollows; i++) {
try {
follower = TwitchStatus.followerarray.getJSONObject(i);
} catch (JSONException e2) {
e2.printStackTrace();
}
try {
followername = follower.getJSONObject("user").getString("display_name");
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println("array ist: "+i +" " +followername);
listnumber = offsetvalue+99; // 0+99
if (i == listnumber){
offsetvalue = offsetvalue+100;
try {
TwitchStatus.FollowerTicker();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
// System.out.println("Follower abgleichs-Liste: "+followername);
}
还有读者方法:
////////////////////////////////////////////////////////////////////////////////////
// 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 static void FollowerTicker() throws IOException, JSONException {
json = readJsonFromUrl2("https://api.twitch.tv/kraken/channels/dotastarladder_en/follows?direction=DESC&limit=100&offset="+MyBot.offsetvalue+"");
followerarray = json.getJSONArray("follows");
{
JSONObject follower = followerarray.getJSONObject(0);
neuerfollower = follower.getString("created_at");
fname = follower.getJSONObject("user").getString("display_name");
totalfollows = json.getInt("_total");
}
}
答案 0 :(得分:3)
来自API docs:
的注释limit可选整数数组中的最大对象数。默认值为25.最大值为100.
那么,你做什么的?当然,查询下一个!这是链接页面中的JSON位,以及下一个URL的示例。基本上,你只是放入一个偏移量,但URL已经声明了它,所以......
{
"_total": 1234,
"_links": {
"next": "https://api.twitch.tv/kraken/channels/test_user1/follows?direction=DESC&limit=25&offset=25",
我如何解决这个问题是这样的: