我有一个json文件。
{"bla":"bla"}
{"bla":"bla"}
{"bla":"bla"}
{"bla":"bla"}
......
如何将这些格式化为有效的json类型,例如:
[
{"bla":"bla"},
{"bla":"bla"},
{"bla":"bla"},
{"bla":"bla"},
......
{"bla":"bla"}
]
在每个{}
之后插入逗号,除了最后一个。
我怎么能在java中做到这一点?
感谢。
PS:好的。这是一个名为“1.json”的json文件,它是我从TCP响应创建的。我发送一些名称到服务器,我收到响应并保存为文件。因为所有数据都像{“bal”:“bla”} {“bal”:“bla”} {“bal”:“bla”} {“bal”:“bla”} ...... 这是一个无效的json结构,jQuerygetJSON()
无法读取它。所以我想将它解析为有效类型。
答案 0 :(得分:3)
查看Gson
答案 1 :(得分:2)
How can I do that in java, thx!
不要打扰。只需在文本编辑器中打开它,在"}
和"},
之间进行搜索替换,然后进行一些清理。
答案 2 :(得分:1)
使用JSONObject。
//Java style pseudo-code (using some string reader)
JSONArray jsonArray = new JSONArray();
while ((value = inputStream.readLine()) != null) { //This is Pseudocode - don't take is as Gospel
JSONObject json = new JSONObject(value);
jsonArray.put(json);
}
System.out.println(jsonArray.toString());
答案 3 :(得分:0)
String[] lines = inputJson.split('\n');
StringBuilder out = new StringBuilder();
out.append("[\n");
for (String line : lines) {
out.append(" ").append(line).append(",\n");
}
out.setLength(out.length() - 2);
out.append("\n]");
String outputJson = out.toString();
答案 4 :(得分:0)
如果您只需要重新格式化该输入(JSON对象的行,每行一行),那么您根本不需要将它们转换为Java JSON对象,您只需读取该文件并将其转换为新的JSON字符串:
StringBuilder str = new StringBuilder();
BufferedReader reader = null;
try {
str.append("[\n");
for( String line = reader.readLine(); line != null; line = reader.readLine() ){
str.append(line).append(",\n");
}
str.setLength(str.length()-2);
str.append(']');
} catch( Exception ex ){
if(reader != null){ reader.close(); }
}
或类似的东西。请注意,只有在单行上定义JSON对象时,这才会有效。
希望这有帮助。
答案 5 :(得分:0)
//你也可以创建一个没有任何类型库的JSON字符串,因为使用库可以延长程序的执行时间。
String json = new String("[")
while ((value = inputStream.readLine()) != null) {
if(json=="["){
json +=value
}else{
json +=","+value
}
}
//complete the last enclosing character
json +="]"
这是一种我想的简单方法