2017-11-19 20 views
0

첫번째 질문 만들기 :구문 분석 JSON IRC를 봇에 대한 API에서 배열과 초기 메시지를

임은 OpenWeatherMap의 API를 구현 Pircbot를 사용하여 자바의 IRC 봇을 만들고, 내가 문제가 초기 메시지를 표시하는 데 문제를 채널에 연결하자마자 봇에서 전송됩니다. 이 메시지에 API 사용 방법에 대한 지침을 표시하고 싶습니다. 생성자에서이 작업을 시도했지만 onMessage method에 표시된대로 채널 문자열이 필요하므로 작동하지 않습니다. Pircbot website에있는 방법을 검색했지만이 방법을 찾을 수 없습니다.

두번째 질문 : OpenWeatherMap의 API의 특정 부분을 구현

나는 데 문제. "weather" 들어, JsonArray 사용하고 완전히 구문 분석하는 방법을 잘 모르겠습니다. API이기 때문에 파일이 아니기 때문에 온라인에서 찾은 솔루션은 JsonParser를 사용하려고하는 동안 JsonReader를 사용하기 때문에 작동하지 않습니다. 다음은이 배열을 구문 분석하는 코드입니다. "날씨"JsonArray에서 "기본"키에 액세스하려고합니다. 이 JsonArray를 구문 분석하는 방법에 해당하므로, 어떠한 아이디어

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; 
} 

:

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에서 있던 다른 키를 구문 분석하는 방법이다? 나는 "main"과 "description"키가 정확하기를 바란다.

답변

0

음 .. 난 진짜 자바 개발자 아니지만, 난 그에게 기회를 줄 것이다.

질문 1 : 봇이 고전 onJoin 이벤트 같은 소리 채널

에 합류 게시 메시지. 누군가가 (아마도 우리가) 우리가있는 채널 에 가입 할 때마다 PircBot 문서

protected void onJoin(String channel, 
         String sender, 
         String login, 
         String hostname) 

에서

이 메서드가 호출됩니다.

PircBot 추상 클래스에서이 메소드의 구현은 어떤 작업을 수행하지 않고 필요에 따라 오버라이드 (override) 할 수 있습니다.

매개 변수 :

채널 - 누군가가 가입 채널.
보낸 사람 - 채널에 가입 한 사용자의 닉.
login - 채널에 가입 한 사용자의 로그인입니다.
호스트 이름 - 채널에 가입 한 사용자의 호스트 이름.

Question2 :하는 jobject에서 메인 속성 추출 이는 내부는 jarray.

당신은 솔루션에 가까운, 당신은 아주 기본적인 일을 잊어왔다.

날씨 따라서 당신은 단지 당신이 때문에 .getAsString()을 적용 할 수있는 객체, "주"라는 당신이 다음 JSON 객체 속성을 추출하는 .get("main")을 적용해야하는의 객체를 반환합니다 weatherArray.get(1)를 기대한다, 객체의 배열입니다 그것은 정상적인 문자열입니다.

코드은 (테스트하지,하지만 생각은 이해할 수있다)

JsonArray weatherArray = MasterWeatherObject.getAsJsonArray("weather"); 
for (int i = 0; i < weatherArray.size(); i++) { 
    String main = weatherArray.get("main").getAsString(); 
    System.out.println(main); 
}