如何在Java中发布JSON字符串

时间:2011-12-04 07:00:01

标签: java 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);
        }
    }

2 个答案:

答案 0 :(得分:1)

为什么不使用google-gson之类的外部库来为您处理JSON编码?

从项目说明:

  

Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象。

答案 1 :(得分:0)

  1. 我建议您使用Google GSON撰写要发布的JSON。

  2. 如果您要编写部分字符串,建议您使用StringBuilderStringBuffer类,而不是+运算符。

  3. 使用HttpURLConnection代替UrlConnection并在发出请求前致电conn.setRequestMethod("POST");。这是必需的,因为默认情况下,如果您不直接设置,您的请求将是GET请求,而不是POST请求。

  4. 在将数据发送到服务器之前对其进行编码。