Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
#1

Парсинг JSON объекта - Программирование Android

29.06.2016, 13:20. Просмотров 415. Ответов 12
Метки нет (Все метки)

Здравствуйте, программисты!
Помогите, пожалуйста, с решением задачи:
Есть json-объект такого вида:
JSON
1
{"map": {"firstname": null, "lastname": null, "birth": {"day": null, "place": null}}, "data": [["Ivan", "Ivanov", ["2002-01-01","Moscow"]], ["Pavel", "Petrov", ["2001-10-05","Peterburg"]]]}
И мне нужно как-то распарсить, т.е. получить данные для каждого ключа:
firstname = "Ivan", lastname = "Ivanov" и т.д.
Есть ли такая готовая функция в Android Studio для извлечения данных?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2016, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг JSON объекта (Программирование Android):

Парсинг json - Программирование Android
Здравствуйте! Имеется такой json код: { "data": }И я его обрабатываю так: JSONArray urls = json.getJSONArray("data"); Тогда, как мне...

Парсинг Json - Программирование Android
Здравствуйте подcкажите как сделать: нужно данные из Json засунуть в массив, чтобы его дальше передавать по активностям. Json парсится в...

Парсинг JSON - Программирование Android
Доброй ночи! Есть задача распарсить JSON не зная изначально сколько и чего там находится, а так же не зная ни имен ни другой инфы, кроме...

Парсинг JSON - Программирование Android
Привет знатокам своего дела, у меня уже крик души! Какой час не выходит распарсить такой JSON ...

Парсинг JSON - Программирование Android
Дали задание Мне надо воссоздать структуру JSON в сообственных объектах. Т.е. парсить надо не в String (например), а сделать вот что: -...

Парсинг JSON'а - Программирование Android
Здравствуйте! Недавно я на php+msql и Eclipse пробовал этот пример с сайта...

12
powowstal
30 / 30 / 6
Регистрация: 21.03.2013
Сообщений: 359
29.06.2016, 15:20 #2
Alex-22, конечно есть только не в оболочке (IDE), а в самом языке ) , вот к примеру стандартная библиотека
Java
1
org.json
А вот как с ней работать:
http://goloburdin.blogspot.com/2011/03/json-java.html
парсинг в конце стати, там все максимально просто и понятно
0
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
30.06.2016, 13:23  [ТС] #3
powowstal, посмотрел по этой ссылке, но этот метод не подходит для моего JSON-объекта.
Я думаю, что сначала надо получить JSON-объект такого вида:
JSON
1
{"map": [{"firstname": "Ivan", "lastname": "Ivanov", "birth": {"day": "2002-01-01", "place": "Moscow"}}, {"firstname": "Pavel", "lastname":"Petrov","birth": {"day":  "2001-10-05", "place": "Peterburg"}}]}
Только вот не знаю, как привести к такому виду.
И потом уже можно распарсить по тому методу, что вы указали. Или есть какие-нибудь другие варианты?
0
powowstal
30 / 30 / 6
Регистрация: 21.03.2013
Сообщений: 359
30.06.2016, 13:44 #4
Цитата Сообщение от Alex-22 Посмотреть сообщение
Есть json-объект такого вида:
JSONВыделить код
1
{"map": {"firstname": null, "lastname": null, "birth": {"day": null, "place": null}}, "data": [["Ivan", "Ivanov", ["2002-01-01","Moscow"]], ["Pavel", "Petrov", ["2001-10-05","Peterburg"]]]}
И мне нужно как-то распарсить
То у вас есть объект, то нет, вы определитесь
0
Pablito
2479 / 1963 / 611
Регистрация: 12.05.2014
Сообщений: 6,878
Завершенные тесты: 1
30.06.2016, 14:56 #5
что бы не писать класс-модель ручками, вот пару ссылок - копируешь туда json и тебе генерятся классы, только почистить мусор и моделька готова
http://pojo.sodhanalibrary.com/
http://www.jsonschema2pojo.org/

потом из json клепать объекты, примеров вагон, да хотя бы и вот
0
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
01.07.2016, 10:38  [ТС] #6
powowstal, значит я плохо объяснил.
Ещё раз, есть такой вид:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
 
{"map":{
"firstname": null, 
"lastname": null, 
"birth": {
"day": null, 
"place": null
}}, 
"data":[
["Ivan", "Ivanov", ["2002-01-01","Moscow"]], 
["Pavel", "Petrov", ["2001-10-05","Peterburg"]]
]}
Сначала идёт объект "map". Вы заметили, что в "map" у ключей значения равны null. А затем идёт массив "data". И надо присвоить ключам объекта "map" данные из массива "data" . При этом должен сохраняться порядок присвоения значений. Вы же знаете, что в "data" у первого элемента key = 0, а value ="Ivan", а в "map" естественно будет key ="firstname". И надо как-то присвоить ключи.
В случае с вашими предложениями не будет присвоения ключей. А просто получим ключи со значениями null, если вызовем из объекта "map". А при вызове из массива "data" получим данные с неизвестными ключами (без firstname, lastname и т.д).
В третьем посте я просто предложил как вариант преобразования в такой вид. Чтобы в итоге можно использовать функции для извлечения данных.
Паблито, ваш вариант интересный, но сначала надо привести к тому виду, как я описал выше.
0
petruchodd
01.07.2016, 18:03
  #7

Не по теме:

я чето нифига не понял что он хочет

0
Pablito
01.07.2016, 19:12
  #8

Не по теме:

аналогично, что-то приводить куда-то, менять что ли структуру json-а перед парсингом в объект
в любом случае с темы я слился, водоваров чую издалека )

0
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
01.07.2016, 23:02  [ТС] #9
Я просто изложил свои мысли. Может стоило по-другому сделать.
Простым языком хочу получить данные для listview:
Для первого человека:
firstname: "Ivan",
lastname: "Ivanov",
day: "2002-01-01",
place: "Moscow";
Для второго человека:
firstname: "Pavel",
lastname:"Petrov",
day: "2001-10-05",
place: "Peterburg"
0
petruchodd
96 / 95 / 9
Регистрация: 23.06.2009
Сообщений: 535
03.07.2016, 23:09 #10
ну вообщем я понял , но почему json такой кривой, почему у него нету сразу в масиве записи "firstname","ivan" ? такой джсон как у вас сильно "напрягает" и добавляет кучу лишнего кода . В идеале должно быть что-то типа такого

Java
1
2
3
4
5
6
"data":[
["firstname":"Ivan",
 "lastname":"Ivanov",
 "day":"2002-01-01",
 "place":"Moscow"
 ]}
п.с. структура json возможно не правильна. Но главное это каждый обьект от массива обьектов data - это не большой object с нормальными данными и значениями по которым можна взять данные .

Не по теме:


Немного юмора . Если вам такой json выдает backend , можете смело идти и бить его по голове , пускай не поленится и выведет в нормальном виде. Нефик изобретать велосипед.

0
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
05.07.2016, 08:20  [ТС] #11
petruchodd, и я об этом тоже.
Почему в таком виде JSON-объект, скорее всего в уменьшении объёма JSON-файла (если массив большой), чтоб не писать каждый раз ключ.
Придется ручками написать функцию по обработке "map", и потом уже с массивом работать.
Просто думал, что есть какая-нибудь функция, чтоб не писать.
Спасибо всем за участие. Тема закрыта.
0
Pablito
2479 / 1963 / 611
Регистрация: 12.05.2014
Сообщений: 6,878
Завершенные тесты: 1
05.07.2016, 10:37 #12
я нашел частичное решение
частичное потому что с первого захода не получилось сразу мапить в готовый POJO, но для начала пойдет

импорты
Java
1
2
3
import com.shaded.fasterxml.jackson.databind.JsonNode;
import com.shaded.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
кусочек кода, который тянет из строки с json нужные поля
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        ObjectMapper mapper = new ObjectMapper();
        try {
            JsonNode rootNode = mapper.readTree(str);
            final JsonNode data = rootNode.get("data");
            for (JsonNode n: data) {
                final String firstname = n.get(0).textValue();
                final String lastname = n.get(1).textValue();
                final String dayOfBirth = n.get(2).get(0).textValue();
                final String place = n.get(2).get(1).textValue();
                Log.i(TAG, " " + firstname + " " + lastname + " " + dayOfBirth + " " + place);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
1
Alex-22
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 6
06.07.2016, 14:11  [ТС] #13
Спасибо, Паблито
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2016, 14:11
Привет! Вот еще темы с ответами:

Не выходит парсинг Json - Программирование Android
@Override protected void onPostExecute(String strJson) { super.onPostExecute(strJson); // выводим целиком полученную...

Парсинг JSON-файла - Программирование Android
Есть файл со следующим содержимым: т.е. только со значениями! Как его распарсить?? Этот способ не работает: void...

Парсинг JSON ответа от сервера - Программирование Android
Здравствуйте друзья, давно не заходил к вам в гости. Столкнулся с таким интересным (интересно построенным) ответом от сервера в формате...

Json http парсинг. Массивы - Программирование Android
Здравствуйте. Нужно спарсить json данные. Есть php файл, который генерирует json код: http://silicon-valley-rus.com/server/get_json.php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
06.07.2016, 14:11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru