С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
1

Парсинг JSON-строки и вывод данных из строки

17.12.2015, 20:17. Показов 3763. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Я разрабатываю Android-клиент, который мог бы обмениваться данными с размещенной WCf-службой.
Для чтения данных из службы в клиенте, я конвертирую данные из службы в json-строку, как эта:
JSON
1
{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}}
В клиенте я пытаюсь парсить эту строку, но у меня выскакивает ошибка.
Вот код парсинга, и получения данных из JSON-строки:
Java
1
2
3
4
5
6
7
8
9
10
JSONObject json=null;
        String str = "{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}}";
        try {
            json = new JSONObject(str);
            String module = json.getJSONObject("0").getString("firstName");
            EditText edt=(EditText)findViewById(R.id.editText);
            edt.setText(module);
        } catch (JSONException e) {
            e.printStackTrace();
        }
Как исправить данную ошибку, чтобы данные из строки можно было извлекать и затем отображать в элементах формы приложения?
Миниатюры
Парсинг JSON-строки и вывод данных из строки  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2015, 20:17
Ответы с готовыми решениями:

Парсинг JSON строки
Доброго времени суток! :) Написал "парсер" JSON для своих нужд. :D Что парсил (пытался...

Парсинг строки JSON
Tcnm json строка типа: вот класс для парсинга: public class ResultJson { ...

Парсинг строки json
Укажите пожалуйста на ошибку: Структура JSON файла: { "threads":, ...

Парсинг Json строки в объект и массив
{ "json": }, { "tovar": } ] } string js = "{ "json"...

7
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.12.2015, 20:27 2
Лучший ответ Сообщение было отмечено lord_commander как решение

Решение

Java
1
            String module = json.getString("firstName");
к чему там getJSONObject("0") - непонятно
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
17.12.2015, 20:47  [ТС] 3
Благодарю!) Не разобрался в парсинге еще, вот и ересь пишется пока что)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
17.12.2015, 20:55 4
вообще можно сделать проще
1. создаем класс, в который будем перегонять эту строку с json, например Person
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Person {
 
    private String firstName;
    private String lastName;
    private DateOfBirth dateOfBirth;
 
    public String getFirstName() {
        return firstName;
    }
 
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
 
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
 
    public DateOfBirth getDateOfBirth() {
        return dateOfBirth;
    }
 
    public void setDateOfBirth(DateOfBirth dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }
 
    static class DateOfBirth {
 
        private int year;
        private int month;
        private int day;
 
        public int getYear() {
            return year;
        }
 
        public void setYear(int year) {
            this.year = year;
        }
 
        public int getMonth() {
            return month;
        }
 
        public void setMonth(int month) {
            this.month = month;
        }
 
        public int getDay() {
            return day;
        }
 
        public void setDay(int day) {
            this.day = day;
        }
    }
}

2. подключаем в build.gradle библиотечку
XML
1
compile 'com.google.code.gson:gson:1.7.2'
и пишем что-то типа
Java
1
2
3
4
        String str = "{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}}";
        Gson gson = new Gson();
        Person person = gson.fromJson(str, Person.class);
        Log.i(TAG, "module: " + person.getDateOfBirth().getMonth());
так как дата рождения прилетает частями придется наверное дописать метод который будет возвращать дату в нужном виде
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
18.12.2015, 04:38  [ТС] 5
А если строка больше, и она содержит не один элемент, а больше?
JSON
1
2
"{"firstName":"Markoff","lastName":"Chaney","dateOfBirth":{"year":1901,"month":4,"day":30}},
"{"firstName":"Martin","lastName":"Lutor","dateOfBirth":{"year":1956,"month":6,"day":15}}""
Можно ли сделать цикл, который бы забивал все части строки в массив, который потом использовать в клиенте?

И для чего нужен Log? Он как-то влияет на парсинг?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.12.2015, 15:43 6
Цитата Сообщение от lord_commander Посмотреть сообщение
А если строка больше, и она содержит не один элемент, а больше?
вот именно в таком виде она и приходит или просто скопировал пару объектов наугад?
Цитата Сообщение от lord_commander Посмотреть сообщение
И для чего нужен Log? Он как-то влияет на парсинг?
это вывод в консоль
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 139
18.12.2015, 15:54  [ТС] 7
Если быть точнее, то вот: взял сгенерированую JSON-строку, из небольшой своей программки на c#, которая превращает элементы списка List в JSON-строку:
JSON
1
[{"firstName":"Alex","lastName":"Scott","dateofbirth":{"year":1901,"month":4,"day":30}},{"firstName":"Martin","lastName":"Yang","dateofbirth":{"year":1911,"month":6,"day":22}}]
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.12.2015, 16:09 8
Java
1
        ArrayList<Person> list = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
str - это строка с json
на выходе будет Arraylist с объектами Person
1
18.12.2015, 16:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2015, 16:09
Помогаю со студенческими работами здесь

Функция отправки GET запросов и парсинг JSON-строки в таблицу
Добрый день Есть функция, которая отправляет http-запросы и возвращает результат в виде строки ...

Пропадает конец Json строки, при передаче Json строки через Ajax
Всем привет. Возникла следующая проблема. Из php получаю json строку, полученную с помощью...

[solved] Магия: парсинг JSON из файла не работает. Из строки все нормально
Всем привет. Начинаю понимать, что в веб-программировании творится неистовое волшебство. А суть-то...

Парсинг строки, вывод построчно
python 3.7 подскажите, есть большая строка, как с помощью регулярных выражений или как нибудь...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru