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

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

Войти
Регистрация
Восстановить пароль
 
lord_commander
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 137
#1

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

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

Добрый день!
Я разрабатываю 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();
        }
Как исправить данную ошибку, чтобы данные из строки можно было извлекать и затем отображать в элементах формы приложения?
0
Миниатюры
Парсинг JSON-строки и вывод данных из строки  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2015, 20:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг JSON-строки и вывод данных из строки (Программирование Android):

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

Парсинг большого объема JSON данных - Программирование Android
Столкнулся со следующей проблемой. С сервера приходит большой объем JSON данных (несколько мб), и когда я пытаюсь преобразовать полученные...

Парсинг json, многомерный массив с разными типами данных - Программирование Android
Сервер отдает массив вида: $arr $arr Если делать так: JSONObject jObj = new JSONObject(outOfServer); jObj.getJSONObject(0); То...

Парсинг строки - Программирование Android
У меня есть строка вида {el1=val1,el2=val2...eln=valn} Как её распарсить таким образом, что бы в арайлист занести только...

Парсинг строки - Программирование Android
Добрый день. Столкнулся с проблемой. В общем есть некая строка примерно такого содержания "{xxxx=Май 2013}" надо вытянуть из нее месяц...

Парсинг строки ввода - Программирование Android
подскажите как парсить строки, для ввода данных пользователем(если можно примером)

7
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
17.12.2015, 20:27 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
            String module = json.getString("firstName");
к чему там getJSONObject("0") - непонятно
1
lord_commander
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 137
17.12.2015, 20:47  [ТС] #3
Благодарю!) Не разобрался в парсинге еще, вот и ересь пишется пока что)
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
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());
так как дата рождения прилетает частями придется наверное дописать метод который будет возвращать дату в нужном виде
0
lord_commander
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 137
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
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
18.12.2015, 15:43 #6
Цитата Сообщение от lord_commander Посмотреть сообщение
А если строка больше, и она содержит не один элемент, а больше?
вот именно в таком виде она и приходит или просто скопировал пару объектов наугад?
Цитата Сообщение от lord_commander Посмотреть сообщение
И для чего нужен Log? Он как-то влияет на парсинг?
это вывод в консоль
0
lord_commander
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 137
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
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
18.12.2015, 16:09 #8
Java
1
        ArrayList<Person> list = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
str - это строка с json
на выходе будет Arraylist с объектами Person
0
18.12.2015, 16:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2015, 16:09
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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