【问题标题】:how to get a message from this Json如何从这个 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字符串?
  • 在方法中作为对象给出

标签: java android json string parsing


【解决方案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 了。如果您阅读了您正在使用的库的文档,您将获得更多信息。也许,你不需要转换它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2019-01-18
  • 2019-02-06
  • 2019-11-07
  • 2020-06-23
  • 1970-01-01
相关资源
最近更新 更多