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

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

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

Осуществить парсинг JSON с помощью готового макета "VKApiMessage" - Программирование Android

13.08.2014, 01:53. Просмотров 876. Ответов 1
Метки нет (Все метки)

Я никак не могу осуществить парсинг JSON с помощью готового макета "VKApiMessage".

Пример JSON: https://vk.com/dev/messages.getDialogs
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
response: {
count: 3132,
unread_dialogs: 41,
items: [{
unread: 1,
message: {
id: 360658,
date: 1394122091,
out: 0,
user_id: 85635407,
read_state: 0,
title: ' ... ',
body: 'hey'
}
}]
}


VKApiMessege: https://github.com/VKCOM/vk-android-...piMessage.java

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
public class VKApiMessage extends VKApiModel implements Identifiable, android.os.Parcelable {
 
    /**
     *  Message ID. (Not returned for forwarded messages), positive number
     */
    public int id;
 
    /**
     * For an incoming message, the user ID of the author. For an outgoing message, the user ID of the receiver.
     */
    public int user_id;
 
    /**
     *  Date (in Unix time) when the message was sent.
     */
    public long date;
 
    /**
     * Message status (false — not read, true — read). (Not returned for forwarded messages.)
     */
    public boolean read_state;
 
    /**
     * Message type (false — received, true — sent). (Not returned for forwarded messages.)
     */
    public boolean out;
 
    /**
     * Title of message or chat.
     */
    public String title;
 
    /**
     * Body of the message.
     */
    public String body;
 
    /**
     * List of media-attachments;
     */
    public VKAttachments attachments = new VKAttachments();
 
    /**
     * Array of forwarded messages (if any).
     */
    public VKList<VKApiMessage> fwd_messages;
 
    /**
     *  Whether the message contains smiles (false — no, true — yes).
     */
    public boolean emoji;
 
    /**
     * Whether the message is deleted (false — no, true — yes).
     */
    public boolean deleted;
 
    public VKApiMessage(JSONObject from) throws JSONException
    {
        parse(from);
    }
    /**
     * Fills a Message instance from JSONObject.
     */
    public VKApiMessage parse(JSONObject source) throws JSONException {
        id = source.optInt("id");
        user_id = source.optInt("user_id");
        date = source.optLong("date");
        read_state = ParseUtils.parseBoolean(source, "read_state");
        out = ParseUtils.parseBoolean(source, "out");
        title = source.optString("title");
        body = source.optString("body");
        attachments .fill(source.optJSONArray("attachments"));
        fwd_messages = new VKList<VKApiMessage>(source.optJSONArray("fwd_messages"), VKApiMessage.class);
        emoji = ParseUtils.parseBoolean(source, "emoji");
        deleted = ParseUtils.parseBoolean(source, "deleted");
        return this;
    }
 
    /**
     * Creates a Message instance from Parcel.
     */
    public VKApiMessage(Parcel in) {
        this.id = in.readInt();
        this.user_id = in.readInt();
        this.date = in.readLong();
        this.read_state = in.readByte() != 0;
        this.out = in.readByte() != 0;
        this.title = in.readString();
        this.body = in.readString();
        this.attachments = in.readParcelable(VKAttachments.class.getClassLoader());
        this.fwd_messages = in.readParcelable(VKList.class.getClassLoader());
        this.emoji = in.readByte() != 0;
        this.deleted = in.readByte() != 0;
    }
 
    /**
     * Creates empty Country instance.
     */
    public VKApiMessage() {
 
    }
 
    @Override
    public int getId() {
        return id;
    }
 
    @Override
    public int describeContents() {
        return 0;
    }
 
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(this.id);
        dest.writeInt(this.user_id);
        dest.writeLong(this.date);
        dest.writeByte(read_state ? (byte) 1 : (byte) 0);
        dest.writeByte(out ? (byte) 1 : (byte) 0);
        dest.writeString(this.title);
        dest.writeString(this.body);
        dest.writeParcelable(attachments, flags);
        dest.writeParcelable(this.fwd_messages, flags);
        dest.writeByte(emoji ? (byte) 1 : (byte) 0);
        dest.writeByte(deleted ? (byte) 1 : (byte) 0);
    }
 
    public static Creator<VKApiMessage> CREATOR = new Creator<VKApiMessage>() {
        public VKApiMessage createFromParcel(Parcel source) {
            return new VKApiMessage(source);
        }
 
        public VKApiMessage[] newArray(int size) {
            return new VKApiMessage[size];
        }
    };
}
Как осуществить парсинг JSONObject?
Вот часть моего кода, но не работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void JSON(JSONObject JsonObject){
        TextView text = (TextView)findViewById(R.id.textnew);
        try{
            String v = JsonObject.toString();
 
            VKApiMessage de = new VKApiMessage().parse(JsonObject);
            String a = de.body;
 
            VKApiMessage df = new VKApiMessage(JsonObject).parse(JsonObject);
            String b = df.body;
 
            VKApiMessage dj = new VKApiMessage();
            String c = dj.parse(JsonObject).body;
 
            VKApiMessage dh = new VKApiMessage(JsonObject);
            String d = dh.parse(JsonObject).body;
 
            text.setText("1: " + a + "\n2: " + b + "\n3: " + c + "\n4: " + d + "\nOriginal: " + v);
            
        }catch (JSONException e){throw new RuntimeException(e);
        }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 01:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Осуществить парсинг JSON с помощью готового макета "VKApiMessage" (Программирование Android):

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - &quot;списки_жанров&quot;, &quot;фильмы&quot;, &quot;режиссеры&quot; мне...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio" - Программирование Android
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора данных. Для использования его c WMS. После долгих раздумий было...

При эмулировании вместо надписи "Hello world" отображается "android" - Программирование Android
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил среду, все настроил как на google.developers . Когда...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grantemon
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 1
19.05.2015, 13:07 #2
Решил проблему так:


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
import com.vk.sdk.api.model.VKApiMessage;
import com.vk.sdk.api.model.VKList;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
public class VkMessageArray extends VKList<VKApiMessage> {
 
    private VKList<VKApiMessage> messagesFromRequest;
    String jsonString;
 
 
    VkMessageArray(String jsonString) throws JSONException {
       this.jsonString = jsonString;
        messagesFromRequest = new  VKList<VKApiMessage>();
    }
 
    VKList<VKApiMessage> parseStr() throws JSONException {
        JSONObject jsonObj1 = new JSONObject(jsonString);
        JSONArray messagesArray = jsonObj1.getJSONObject("response").getJSONArray("items");
 
        for (int i = 0; i<messagesArray.length(); i++ ){
            messagesFromRequest.add(new VKApiMessage(messagesArray.getJSONObject(i)));
        }
 
        return messagesFromRequest;
 
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2015, 13:07
Привет! Вот еще темы с ответами:

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

Что означают конструкции "finally" и "throw new"? - Программирование Android
Я с Java уже давно, но с этим столкнулся в первый раз. Объясните, пожалуйста, что означают вот это &quot;finally&quot; и &quot;throw new&quot;. Вот пример...

блокирование кнопок "Home" "Back" - Программирование Android
Доброго времени. собственно вопрос сл. можно ли заблокировать или каким либо образом отключить возможность нажатия пользования кнопок...

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


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

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

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