我正在尝试发布包含推文的大型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);
}
}
答案 0 :(得分:1)
为什么不使用google-gson之类的外部库来为您处理JSON编码?
从项目说明:
Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象。
答案 1 :(得分:0)
我建议您使用Google GSON撰写要发布的JSON。
如果您要编写部分字符串,建议您使用StringBuilder
或StringBuffer
类,而不是+
运算符。
使用HttpURLConnection
代替UrlConnection
并在发出请求前致电conn.setRequestMethod("POST");
。这是必需的,因为默认情况下,如果您不直接设置,您的请求将是GET
请求,而不是POST
请求。
在将数据发送到服务器之前对其进行编码。