Разбор файла объектов JSON и преобразование в массив JSON - PullRequest
0 голосов
/ 15 мая 2018

У меня есть файл, который содержит объекты JSON. Я пытаюсь получить доступ к файлу, используя его URL в моей Java-программе, чтобы получить доступ к его содержимому следующим образом.

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, перебрать каждый из них, а затем сохранить данные в моей базе данных.

У меня есть образец типа данных, которые я получаю по следующему URL: Пример файла

Есть ли способ, которым я могу получить все объекты в файле для выполнения необходимых операций.

Кроме того, я могу вручную сохранить данные в массив JSON в новом файле вручную, если ничего не работает, но между каждым объектом JSON нет разделения запятой, что затрудняет мне анализ данных.

Но каждый объект JSON - это новая строка. Так есть ли способ разобрать его на основе этого.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Я нашел решение, которое хорошо сработало для меня

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 с использованием вышеуказанного подхода, а затем выполнить итерацию по этому массиву, чтобы сохранить данные в соответствии с моим требованием

0 голосов
/ 15 мая 2018

@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);
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...