2012-04-04 5 views
0

Я использую JSON-RPC. Когда я отправляю запрос на сервер, я получаю ответ с сервера, длина которого почти 2 МБ. В данных нет нового символа линии. Как известно, невозможно хранить все данные 2MB внутри строки, мне пришлось записывать данные в файл.Как искать содержимое файла и читать только часть файла

Это то, что выглядит мой файл как:

[{ "data1": "data1", ....}, {...}, ...]

Я хочу прочитать данные по частям, например, получить строку между «{» и «}», чтобы получить точное содержимое 1 объекта JSON, после чего я смогу проанализировать данные.

Я упомянул об этом link, но я не получу позицию «{» и «}», чтобы скопировать данные JSON.

Есть ли способ реализовать такую ​​вещь?

ответ

2

Вы также можете использовать

com.google.gson.stream.JsonReader.JsonReader

И компилировать ваш объект, как вы получить данные с сервера. Нет необходимости хранить в String или писать и читать из файла

+0

Неужели он действительно может это сделать, если ему нужно загрузить файл 2Mb и превратить его в json-объект в ram? – Snicolas

+0

ну, в конце концов, он сохранит его в памяти. поэтому я скажу «да». Если он должен повторно использовать случайные части, то система кэширования может быть лучшим вариантом, но ничего подобного не указано. Кроме того, он может хранить его непосредственно в sqlLite – weakwire

+0

Я думаю, что он превосходит систему кэширования. Его требование получить некоторые части json только будет легче выполнить. – Snicolas

0

Вы должны использовать regex pattern

более или менее что-то вроде этого:

Pattern pattern = Pattern.compile("{(.*?)}"); 
Matcher matcher = pattern.matcher(response); 
while(matcher.find()) { 
    String jsonString = "{" + matcher.group(0) +"}" ; 
    //parse the json 
}