如何从这个 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 值 [重复]

如何从 .json 文件 discord.py 中获取信息

如何通过API从Hipchat获取房间的所有消息历史记录?

如何从Typescript中以#或@开头的属性获取JSON数据

无法从 websocket 消息对象获取 json 值

如何从url获取参数到变量