преобразовать большой список в строку json - PullRequest
1 голос
/ 07 февраля 2020

У меня есть список, содержащий 9864284 элементов, и я хочу преобразовать этот список в строку json, я использовал рекурсивный метод, но у меня всегда исключение outOfMemory.

public String createRecuJson(List<CustomObject> inputList, int nElement, int index, List<String> result, String resJson) throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    if( index + nElement > inputList.size() ) {
        resJson = resJson.concat(","+objectMapper.writeValueAsString(inputList.subList(index,inputList.size())).replace("[", "").replace("]", ""));
        result.add(objectMapper.writeValueAsString(inputList.subList(index,inputList.size())));
        return resJson;
    }else {
        final List<CustomObject> subListCustomObjects = inputList.subList(index, index+nElement);
        if(resJson.length() == 0)
            resJson.concat(objectMapper.writeValueAsString(subListCustomObjects).replace("[", "").replace("]", ""));
        else
            resJson = resJson.concat(","+objectMapper.writeValueAsString(subListCustomObjects).replace("[", "").replace("]", ""));
        result.add(objectMapper.writeValueAsString(subListCustomObjects));
        return createRecuJson(inputList, nElement, index+nElement, result, resJson);
    }
}

1 Ответ

0 голосов
/ 07 февраля 2020

Попробуйте использовать Jackson Streaming API вместо вашей реализации. Это самый низкий уровень доступа для записи к JSON контенту.

Здесь вы можете найти несколько примеров.

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