Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / разбиение json на куски без создания дерева объектов / 10 сообщений из 10, страница 1 из 1
13.11.2013, 13:00:22
    #38463312
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
Добрый день!

Прилетел мне некий json вида
Код: sql
1.
{"elem1":{<sub-json1>},"elem2":{<bsub-json2>}}



Как из него с минимальными затратами ресурсов моих и компьютера получить нужно количество json'ов?
Т.е. в данном случае- массив из двух элементов с {<sub-json1>} и {<sub-json2>}?

Что там в {<sub-json1>} я не знаю и знать не хочу в данном случае.

Я сейчас заиспользовал org.codehaus.jackson.JsonParser и не могу найти там это. Вот "skipChildren" есть и делает что надо, а "получить Children" - нет. Как с помощью этой библиотеки сделать нужное? Ну или другой...

--
Алексей.
...
Рейтинг: 0 / 0
13.11.2013, 14:24:27
    #38463415
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
может json sax parser поискать
...
Рейтинг: 0 / 0
13.11.2013, 14:41:33
    #38463444
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
Alexey TominДобрый день!
Прилетел мне некий json вида
Код: sql
1.
{"elem1":{<sub-json1>},"elem2":{<bsub-json2>}}


Как из него с минимальными затратами ресурсов моих и компьютера получить нужно количество json'ов?
Т.е. в данном случае- массив из двух элементов с {<sub-json1>} и {<sub-json2>}?


В квадратные скобочки заключить:
{"elem":[{<sub-json1>},{<bsub-json2>}]}

Тогда это будет легко маппиться на объект
Код: java
1.
2.
3.
4.
5.
puplic class MyClassFromJson {
...
private ElemType[] elem;
...
}



Alexey TominЧто там в {<sub-json1>} я не знаю и знать не хочу в данном случае.

По-моему зря..
Всё же, если мы используем стандартные Json-мапперы, получатель должен знать что ему присылают.
...
Рейтинг: 0 / 0
13.11.2013, 14:50:22
    #38463458
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
mesierВ квадратные скобочки заключить:
{"elem":[{<sub-json1>},{<bsub-json2>}]}

Тогда это будет легко маппиться на объект
Код: java
1.
2.
3.
4.
5.
puplic class MyClassFromJson {
...
private ElemType[] elem;
...
}




Не я создаю его.
Ответ приходит от совершенно внешней программы, мне нужно поделить его на части и запихнуть в строки файла. \Остальное- не моё дело.

mesierAlexey TominЧто там в {<sub-json1>} я не знаю и знать не хочу в данном случае.

По-моему зря..
Всё же, если мы используем стандартные Json-мапперы, получатель должен знать что ему присылают.

См. выше- не я источник, не я получатель. Попробую последовательный парсер, там посмотрим...
...
Рейтинг: 0 / 0
13.11.2013, 18:13:47
    #38463877
drsm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
...
Рейтинг: 0 / 0
13.11.2013, 20:21:46
    #38464058
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
Alexey TominПрилетел мне некий json вида

Фраза порадовала.


С минимальными затратами ресурсов нужно выбрать все значения
между подстроками ":{" и "}". Только это, мсье, будет неполноценный
JSON парсер. И он не пройдет тестирование для случая произвольного
документа.

Но если для твоего документа проканает то
...
Рейтинг: 0 / 0
14.11.2013, 16:47:04
    #38465343
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
maytonС минимальными затратами ресурсов нужно выбрать все значения
между подстроками ":{" и "}". Только это, мсье, будет неполноценный
JSON парсер. И он не пройдет тестирование для случая произвольного
документа.

Но если для твоего документа проканает то

В общем- взял тело метода skipToken и творчески доработал. Теперь он не выкидывает токены, а заботливо их складывает :)
...
Рейтинг: 0 / 0
14.11.2013, 16:55:20
    #38465368
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
Заботливо? Это очень инженерный термин.
...
Рейтинг: 0 / 0
20.11.2013, 11:36:18
    #38470971
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
maytonЗаботливо? Это очень инженерный термин.

Мы ж не ТЗ для госзаказчика пишем :)

А по сути- нашёл библиотеку, зовётся jettison. Там всё просто.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
        String json = ...;
        JSONObject jsonObject = new JSONObject(json);
        JSONArray nameArray = jsonObject.names();
        for (int i=0; i<nameArray.length(); i++) {
            String key = nameArray.getString(i);
            String value = jsonObject.get(key).toString();
            Вот теперь key - это имя поддерева, а value - строка поддерева
        }
...
Рейтинг: 0 / 0
20.11.2013, 14:17:12
    #38471253
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
разбиение json на куски без создания дерева объектов
Alexey Tomin А по сути- нашёл библиотеку, зовётся jettison. Там всё просто.
Сдается мне, это не библиотека, а просто синтаксический сахар на классах org.json )
JSONArray , JSONObject
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / разбиение json на куски без создания дерева объектов / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]