2011-12-04 7 views
0

트윗이 포함 된 큰 JSON 문자열을 게시하려고합니다. 이 트윗에는 이중 따옴표와 많은 특수 문자가 포함되어 있습니다. JSON 문자열을 인코딩해야합니까? 내 코드는 트윗에 특수 문자 나 큰 따옴표가 없으면 작동합니다. 그렇지 않으면 응답을 얻지 못합니다.자바에서 JSON 문자열을 게시하는 방법

String jsonString = "{'data': ["; 

for (Tweet tweet : tweets) { 
    jsonString +="{'text': '" + tweet.getText() + "'},"; 
} 
jsonString += "]}"; 

public void analyseTweets(String jsonString){ 
     try { 
      // Send data 
      URL url = new URL("http://twittersentiment.appspot.com/api/bulkClassifyJson"); 
      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
      wr.write(jsonString); 
      wr.flush(); 

      // Get the response 
      BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
      String line; 
      while ((line = rd.readLine()) != null) { 
       System.out.println(line); 
      } 
      wr.close(); 
      rd.close(); 
     } catch (Exception e) { 
      System.out.print("Error dude!: " + e); 
     } 
    } 
+1

실제로 jsonString을 생성하는 코드가 더 적합 할 것입니다. –

+2

문자열 값에서 큰 따옴표를 이스케이프하지 않으면 유효한 JSON이 아닙니다. 또한 작은 따옴표를 사용하는 방식은 유효한 JSON이 아닙니다. 또한 배열의 후행 쉼표는 유효한 JSON이 아닙니다. http://jsonlint.com/은 JSON이 유효한지 확인하기위한 멋진 도구입니다. –

+0

Brian에게 감사드립니다. 내 json이 얼마나 무효인지 알지 못했습니다. Jsonlint가 도움이됩니다. 큰 따옴표가 포함 된 모든 트윗을 무시하기로했습니다. –

답변

1

왜 당신은 당신을 위해 JSON 인코딩을 처리하는 등 google-gson 같은 외부 라이브러리를 사용하지 않는? 프로젝트 설명에서

:

GSON 자바가 JSON 표현으로 개체로 변환하는 데 사용할 수있는 자바 라이브러리입니다. JSON 문자열을 동등한 Java 객체로 변환하는데도 사용할 수 있습니다. Gson은 소스 코드가없는 기존 오브젝트를 포함하여 임의의 Java 오브젝트에 대해 작업 할 수 있습니다.

0
  1. 난 당신이 게시 할 JSON을 구성하는 Google GSON를 사용하는 것이 좋습니다.

  2. 부품에서 문자열을 작성하는 경우 + 연산자 대신 StringBuilder 또는 StringBuffer 클래스를 사용하는 것이 좋습니다.

  3. UrlConnection 대신 HttpURLConnection을 사용하고 요청하기 전에 conn.setRequestMethod("POST");으로 전화하십시오. 기본적으로 직접 설정하지 않으면 요청이 이 아닌 GET 요청이 될 것이므로 기본값이 필요합니다.

  4. URL 서버에 보내기 전에 데이터를 인코딩하십시오.

관련 문제