我有一个包含JSON对象的文件。我试图在我的java程序中使用其URL来访问该文件,以访问其内容,如下所示。
URL url = new URL(Url);
URLConnection request = url.openConnection();
request.connect();
JsonReader jr = new JsonReader(new InputStreamReader((InputStream) request.getContent()));
jr.setLenient(true);
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(jr);
我必须使用jr.setLenient(true);
,因为数据不是JSON对象,而是多个JSON对象。但是这种方法无法帮助我获取文件中的所有JSON对象。我试图获取所有JSON对象,遍历其中的每一个,然后将数据保存到我的数据库中。
我收到了以下网址收到的数据类型示例: Sample File
有没有办法让我可以获取文件中的所有对象来执行所需的操作。
此外,如果没有任何工作,我可以手动将数据手动保存到新文件中的JSON数组中,但每个JSON对象之间没有逗号分隔,这使我很难解析数据。
但是每个JSON对象都是一个新行。那么有没有办法根据它解析它。
答案 0 :(得分:1)
@marekful建议修复JSON字符串以获得有效的
public static void main(String[] args) throws Exception {
URL url = new URL("http://d1kv7s9g8y3npv.cloudfront.net/testsite/files/doc-lib/2018/05/15/10/21/48/448/head/test3.txt#");
URLConnection request = url.openConnection();
request.connect();
final Object content = request.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) content));
String inputLine;
List<String> jsonEntries = new ArrayList<>();
while ((inputLine = br.readLine()) != null) {
jsonEntries.add(inputLine);
}
String jsonString = "[" + jsonEntries.stream().collect(Collectors.joining(",")) +"]";
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(jsonString);
System.out.println(root);
}
}
答案 1 :(得分:0)
我找到了一个适合我的解决方案
URL url = new URL(urlString.trim());
URLConnection request = url.openConnection();
request.connect();
BufferedReader in = new BufferedReader(
new InputStreamReader(
request.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
jsonObject = new JSONObject(inputLine);
jsonArray.put(jsonObject);
}
in.close();
我能够使用上述方法创建一个JSON数组,然后迭代该数组以根据我的要求保存数据