Android Smack接收XML格式的消息我可以将它们更改为JSON吗?
我正在开发一个android聊天应用程序,使用Android Smack接收XML格式的消息我可以将它们更改为JSON吗?,android,xmpp,openfire,asmack,Android,Xmpp,Openfire,Asmack,我正在开发一个android聊天应用程序,使用Openfire作为XMPP的支持服务器,使用smack库作为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."
Openfire
作为XMPP的支持服务器,使用smack库作为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>
我的问题是:我可以接收JSON格式的消息而不是
XML
当我学习smack和xmpp时,如果我在某些地方出错,请指导我。如果有人发现我错了,请纠正我。您可以通过Github将消息转换为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());
}
}
}
归功于Json,它不是Openfire的回复格式。 当然,您可以用Json将所有Openfire重写为“talk”,但对我来说没有意义 我给你的建议是:
- 如果您有性能问题,您可以查找Ejabber
- 如果你需要一个Json,也许Prosody IM有一个插件
- 如果你不想用XmlPullParser打破你的头脑,试试看 以代替打
- 如果您对XML没有信心,只需为每一节类型实现一个“toJson”,这样您就有了类似于
(感谢@Khan)
您将能够使用Json 服务器端开发人员应该使用JSON格式,但不能从android应用程序中执行。没有服务器端开发@ZahidulIslam。我们只是在xampp中有一个数据库,Openfire提供了一切。。!!您真的想接收JSON格式的消息吗?或者您只是想在消息节的
元素(“日期”:“2016年7月8日”,“时间”:“0:40p.m.”,“正文”:“vhklv”,…“
)中提取JSON?我想接收JSON@jankigadhiya你能帮我吗?事实上,这不是我想要的,我不想将XML转换成JSON,但我需要我的openfire直接用JSON响应。如果不能直接实现,我会尝试一下。谢谢你的努力。。!!很抱歉但是我已经提到了原始帖子的链接,我只举了一个例子。@Khan你能帮我吗@VishalPatoliyaツ 我看过你的问题,但说真的,我不知道smack是如何工作的。我还没有写过openfire。我刚刚在我的电脑上安装了它。请给我一些东西(一些设置之类的东西),可以让我的openfire使用JSON进行对话。如果这是不可能的,那么我将转而使用你的替代方案。非常感谢。如果不大规模重写Openfire,就不可能用Json说话,但正如我所建议的,如果问题只是在客户端使用Json,那么只需扩展自定义节(消息、Iq和状态)来编写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"
}
}
MyMessage extends Message
public String toJson()
{
JSONObject xmlJSONObj = XML.toJSONObject(this.toXML());
String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
}