Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
TeslaPro
0 / 0 / 1
Регистрация: 04.07.2014
Сообщений: 3
#1

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

13.08.2014, 01:53. Просмотров 987. Ответов 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);
        }
    }

http://www.cyberforum.ru/android-dev/thread1515625.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 01:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Осуществить парсинг JSON с помощью готового макета "VKApiMessage" (Программирование Android):

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

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

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

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

1
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;
 
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2015, 13:07
Привет! Вот еще темы с решениями:

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

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

блокирование кнопок "Home" "Back"
Доброго времени. собственно вопрос сл. можно ли заблокировать или каким либо...

Парсинг JSON
Доброй ночи! Есть задача распарсить JSON не зная изначально сколько и чего там...


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

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

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