gpt4 book ai didi

Java/Android - 用于创建新多消息聊天的 JSON 解析仅生成一条消息

转载 作者:行者123 更新时间:2023-12-02 03:12:35 24 4
gpt4 key购买 nike

我正在尝试将 JSON 数组解析为多个消息 - 但是在我当前的实现中,数组中的每个后续消息都会覆盖 msg 的值,而不是为数组中的每个消息值创建新消息。我知道我需要在 for 循环中创建一条新消息 - 但我似乎不知道如何以编程方式执行此操作。

如有任何建议,我们将不胜感激。

JSON:

{"messages":[{"message":"User has joined.","type":"agent","created":"2016-11-26 12:56:02","name":"Test User"},{"message":"Hello World?","type":"agent","created":"2016-11-26 12:56:05","name":"Test User"}]}

JAVA:

private void populateMessages(JSONObject msgObj) {
for (int i = 0; i < msgObj.length(); i++) {
messages = ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(messages);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();

}
}



public static ChatMessage fromJson(JSONObject jsonObject) {
ChatMessage msg = new ChatMessage();
try {
JSONArray items = jsonObject.getJSONArray("messages");
for (int i = 0; i < items.length(); i++) {
JSONObject json_data = items.getJSONObject(i);
if(json_data.getString("message") != null)
msg.message = json_data.getString("message");
if(json_data.getString("type") != null)
msg.type = json_data.getString("type");
if(json_data.getString("name") != null)
msg.name = json_data.getString("name");

if(msg.message.equals("Waiting for user.")){
if(json_data.getString("created") != null)
msg.created = convertInitalTime(json_data.getString("created"));
}
else{
if(json_data.getString("created") != null)
msg.created = convertTime(json_data.getString("created"));
}

}


} catch (JSONException e) {
e.printStackTrace();
return null;
}
return msg;
}

最佳答案

   private void populateMessages(JSONObject msgObj) {
messages = ChatMessage.fromJson(msgObj);
mAdapter.clear();
mAdapter.addAll(messages);
mListView.invalidateViews();
mAdapter.notifyDataSetChanged();
}


public static ArrayList<ChatMessage> fromJson(JSONObject jsonObject) {
ArrayList<ChatMessage> messages = new ArrayList<>();
try {
JSONArray items = jsonObject.getJSONArray("messages");
for (int i = 0; i < items.length(); i++) {
ChatMessage msg = new ChatMessage();
....
....
messages.add(msg);
}
}

return messages;
}

将新对象移动到for循环中并使用ArrayList

删除populteMessage中的for循环

在java中更喜欢setter和getters

就这些了..

关于Java/Android - 用于创建新多消息聊天的 JSON 解析仅生成一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com