如何从这个 Json 获取消息
Posted
技术标签:
【中文标题】如何从这个 Json 获取消息【英文标题】:how to get a message from this Json 【发布时间】:2020-07-20 22:20:24 【问题描述】:我监听socket,它来了Json,但是我无法解析得到消息
[private-meeting-chat.98,
"success":true,"data":
"message":"Fuhvvhjv",
"chat_message_type_id":1,
"socket":null]
这是我使用的代码
privateChannel.listen("MeetingChatMessage", args ->
Log.i("Log", Arrays.toString(args));
runOnUiThread(() ->
JSONArray jsonArray = null;
try
jsonArray = new JSONArray(args);
JSONObject jsonObject = jsonArray.getJSONObject(0);
JSONObject jsonDATA= jsonObject.getJSONObject("data");
String message = jsonDATA.getString("message");
Log.i("Log", message);
catch (JSONException e)
e.printStackTrace();
);
args
来找我,我可以在日志中看到它,但我无法从中获取信息
【问题讨论】:
您需要提供有关args
的更多信息 - 它的类型是什么?结构是什么?
[private-meeting-chat.99, "success":true,"data":"message":"Jdjdjd","chat_message_type_id":1,"socket":null ]
这是我的答案的结构,输入 Object
这是一个列表吗?还是json字符串?
在方法中作为对象给出
【参考方案1】:
从您的 cmets 看来,args
似乎是一个列表/数组,其中第二个元素是来自通道的响应。因此,您需要访问该元素并转换为 json。
JSONObject jsonObject = new JSONObject(args[1]);
JSONObject jsonDATA= jsonObject.getJSONObject("data");
String message = jsonDATA.getString("message");
另外,既然它不工作,你有没有检查错误堆栈跟踪是什么?
【讨论】:
错误:没有为 JSONObject(Object) 找到合适的构造函数这个错误 JSONObject jsonObject = new JSONObject(String.valueOf(args[1]));这项工作args[1]
的类型是什么?
向我表明该对象
或许,它已经是 JSONObject 了。如果您阅读了您正在使用的库的文档,您将获得更多信息。也许,你不需要转换它。以上是关于如何从这个 Json 获取消息的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Kafka JSON 消息中获取 org.apache.kafka.connect.data.Decimal 值 [重复]