Java 在一个字符串中显示json
当发出http请求以获取twitch聊天中的用户列表时,我会得到如下响应:Java 在一个字符串中显示json,java,json,Java,Json,当发出http请求以获取twitch聊天中的用户列表时,我会得到如下响应: { "_links": {}, "chatter_count": 27, "chatters": { "moderators": [ "user1", "user2", "user3", "...", ], "viewers": [ "user4", "user5", "user6", ".
{
"_links": {},
"chatter_count": 27,
"chatters": {
"moderators": [
"user1",
"user2",
"user3",
"...",
],
"viewers": [
"user4",
"user5",
"user6",
"...",
]
}
}
我怎样才能在一个字符串中得到所有这些?我有一个字符串,看起来像这样:
{ "_links": {}, "chatter_count": 27, "chatters": { "moderators": [ "user1", "user2", "user3", "...", ], "viewers": [ "user4", "user5", "user6", "...", ] } }
我的请求:
URL url = new URL("http://tmi.twitch.tv/group/user/" + streamerName + "/chatters");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.addRequestProperty("Accept", "application/vnd.twitchtv.v5+json");
conn.addRequestProperty("Client-Id", "j113orc4zqptuzyqnnw1vfel33esj0");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while (null != (temp = br.readLine())) {
System.out.println(temp);
}
您可以将所有新行替换为空格。
包括Windows样式换行符的可能性
String jsonOneLine = json.replaceAll("(\r)?\n", " ");
尽管打印JSON的方式可能会导致换行。你在用什么图书馆?如果有任何等价的prettyPrint
方法,如果不想重新格式化JSON,请不要使用它
例如,使用原始结果,而不是已解析的JSON对象
我不确定您是如何阅读请求结果的,但是:
StringBuilder b = new StringBuilder();
int read = reader.read();
while(read != -1) {
b.append((char) read);
read = reader.read();
}
如果您确定请求确实包含换行符,则可以修改此读取方法以忽略它们
编辑:
既然您使用的是readLine
,为什么不忽略换行符呢
for(String temp = br.readLine(); temp != null; temp = br.readLine())
System.out.print(temp + ' '); // <-- NOT println!
for(字符串temp=br.readLine();temp!=null;temp=br.readLine())
系统输出打印(温度+“”);//@Andremoniy似乎OP只是从一个BufferedReader
读取,至少对我来说是这样,虽然没有太多的上下文。我有点知道你想要我做什么,但我真的不知道怎么做:“你可以用空格替换所有的换行符。”很容易理解。问题是,我没有得到JSON作为一个整体,而是一行一行地得到它。(我在最后编辑了我的问题,这样你就可以看到我是如何打印的。)@1blustone@devistud然后使用read
而不是readLine
:)我的答案包括一个简单的版本
StringBuilder progress = new StringBuilder();
for(String temp = br.readLine(); temp != null; temp = br.readLine())
progress.append(' ').append(temp)
String oneLine = progress.length() < 1 ? "{}" //No JSON found (SB empty)
: progress.substring(1).toString();