我正在开发一个Android聊天应用程序,使用Openfire
作为XMPP的支持服务器,并将库作为XMPP的Android实现。
事情进展顺利。直到我找到另一个用户收到的消息。格式如下:
<message to="rajesh2@peacock-hp" id="0mpqe-10" type="chat" from="rajesh1@peacock-hp/Smack">
<body>{"Date":"8 Jul 2016","Time":"0:40p.m.","body":" vhklv","isMine":true,"msgid":"909-08","receiver":"rajesh2","sender":"rajesh1","senderName":"rajesh1"}</body>
<thread>06ed73bb-21ad-4276-80cb-0ea4fc9d9dfb</thread>
</message>
正在接收消息的我的听众:
private class MMessageListener implements ChatMessageListener {
public MMessageListener(Context contxt) {
}
@Override
public void processMessage(final org.jivesoftware.smack.chat.Chat chat,
final Message message) {
Log.i("MyXMPP_MESSAGE_LISTENER", "Xmpp message received: '"
+ message);
}
}
我的问题是:我能否以JSON格式收到此邮件,而不是 XML ??
当我正在学习smack和xmpp时,如果我在某些地方出错,请指导我。如果你们中的任何一个发现我错了,请纠正我。
答案 0 :(得分:1)
您可以在Github上通过a project将消息转换为JSON格式。
示例:
public class Main {
public static int PRETTY_PRINT_INDENT_FACTOR = 4;
public static String TEST_XML_STRING =
"<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";
public static void main(String[] args) {
try {
JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
System.out.println(jsonPrettyPrintString);
} catch (JSONException je) {
System.out.println(je.toString());
}
}
}
输出是:
{
"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}
}
答案 1 :(得分:1)
Json它不是Openfire的回复格式。 当然,您可以将所有Openfire重写为&#34; talk&#34;在Json,但对我来说没有任何意义。
我建议你:
MyMessage extends Message
public String toJson()
{
JSONObject xmlJSONObj = XML.toJSONObject(this.toXML());
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
}
你可以使用Json。