第一个问题:
我正在使用实现OpenWeatherMap API的Pircbot在java中创建一个IRC Bot,并且我在显示从机器人连接到该通道时发送的初始消息时遇到问题。我希望此消息显示有关如何使用API的说明。我尝试在构造函数中执行此操作,但由于您需要onMessage method中所示的通道字符串,因此无法正常工作。我搜索了Pircbot website中的方法,但无法找到方法。
第二个问题:
我在实现OpenWeatherMap API的某个部分时遇到了问题。对于"weather",它使用了JsonArray,而我并不完全确定如何解析它。因为它是一个API,而不是一个文件,我在网上找到的解决方案一直在工作,因为他们在尝试使用JsonParser时使用了JsonReader。这是我的代码试图解析这个数组。我试图访问" main"来自"天气" JsonArray。
static String parseJsonWeatherMain(String json)
{
JsonElement jelement = new JsonParser().parse(json);
JsonObject MasterWeatherObject = jelement.getAsJsonObject();
JsonArray weatherArray = MasterWeatherObject.getAsJsonArray("weather");
String main = weatherArray.get(1).getAsString();
return main;
}
作为参考,这是我解析刚刚从JsonObjects中的其他键的方法:
static double parseJsonWindGust(String json)
{
JsonElement jelement = new JsonParser().parse(json);
JsonObject MasterWeatherObject = jelement.getAsJsonObject();
JsonObject windObject = MasterWeatherObject.getAsJsonObject("wind");
double gust = windObject.get("gust").getAsDouble();
return gust;
}
所以关于如何解析这个JsonArray的想法?我想要"主要"和"描述"确切的关键。
答案 0 :(得分:0)
嗯..我不是真正的Java开发人员,但我会试一试。
问题1:当机器人加入频道时发布消息
这听起来像是一个经典的onJoin事件。
来自PircBot文档
protected void onJoin(String channel,
String sender,
String login,
String hostname)
只要有人(可能是我们)加入频道,就会调用此方法 我们在哪。
在PircBot中实现此方法 抽象类不执行任何操作,可以根据需要覆盖。
<强>参数:强>
频道 - 有人加入的频道 sender - 加入频道的用户的昵称 login - 加入频道的用户的登录信息 hostname - 加入频道的用户的主机名。
问题2:从JOArray中的JObject中提取 main 属性。
你接近解决方案,你只是忘记了一件非常基本的事情。
weather 是一个对象数组,因此您应该期望weatherArray.get(1)
将返回一个对象,然后您应该应用.get("main")
来提取名为json的对象属性“main”,只有你可以申请.getAsString()
,因为它是一个普通的字符串。
代码(未经过测试,但这个想法可以理解)
JsonArray weatherArray = MasterWeatherObject.getAsJsonArray("weather");
for (int i = 0; i < weatherArray.size(); i++) {
String main = weatherArray.get("main").getAsString();
System.out.println(main);
}