当前位置: 首页 > 知识库问答 >
问题:

在Android中从socket.io解析JSONArray

束作人
2023-03-14
 [{
    "_id":"5a4cee2808699d0014d99dfc",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text1",
    "author":"5a173c64187e5c335488e906",
    "created_at":"1514991144450",
    "__v":0
},{
    "_id":"5a4cee4208699d0014d99dfd",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text2",
    "author":"5a2505c50c1ff300149d799f",
    "created_at":"1514991170944",
    "__v":0
},{
    "_id":"5a4cee8608699d0014d99dfe",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text3",
    "author":"5a173c64187e5c335488e906",
    "created_at":"1514991238321",
    "__v":0
},{
    "_id":"5a4ceea908699d0014d99dff",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text4",
    "author":"5a2505c50c1ff300149d799f",
    "created_at":"1514991273472",
    "__v":0
},{
    "_id":"5a4ceed508699d0014d99e00",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text5",
    "author":"5a173c64187e5c335488e906",
    "created_at":"1514991317353",
    "__v":0
},{
    "_id":"5a4ceef108699d0014d99e01",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text6;)",
    "author":"5a2505c50c1ff300149d799f",
    "created_at":"1514991345153",
    "__v":0
},{
    "_id":"5a4cef1c08699d0014d99e02",
    "conversation_id":"5a4cee2808699d0014d99dfb",
    "message":"text7",
    "author":"5a173c64187e5c335488e906",
    "created_at":"1514991388937",
    "__v":0
}]
private Emitter.Listener onNewMessage = new Emitter.Listener() {
@Override
public void call(final Object.. args) {
    getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run() {
            JSONObject data = (JSONObject) args[0];
            String username;
            String message;
            try {
                username = data.getString("username");
                message = data.getString("message");
            } catch (JSONException e) {
                return;
            }

            // add the message to view
            addMessage(username, message);
        }
    });
}

但问题是,这是针对一个JSON对象的,因此,由于我的数据是一个数组,这难道不需要采用不同的方法吗?

我一直试图像网站上说的那样用传统的方式来做,但它只是返回:

ClassCastException:java.lang.String不能强制转换为org.json.jsonObject

    private Emitter.Listener onConversationJoined = new Emitter.Listener() {
    @Override
    public void call(final Object... args) {
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                String data = args[0].toString();
                Log.e("TestIt", data);
                JSONArray jsonarray;
                try {
                    jsonarray = new JSONArray(args[0]);
                    for (int i=0; i < jsonarray.length(); i++) {
                        JSONObject chatmsg = jsonarray.getJSONObject(i);
                        String conversation_id = chatmsg.getString("conversation_id");
                        String message = chatmsg.getString("message");
                        String author = chatmsg.getString("author");
                        String created_at = chatmsg.getString("created_at");

                        addMessageUser(message);

                        // Whatever you want to do with these fields.

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });
    }
};

在logcat里说:

01-03 22:04:53.758 322 59-32259/com.app.app.app W/system.err:org.json.jsonException:不是基元数组:class java.lang.string

在这条线上:

共有1个答案

黄飞翮
2023-03-14

我通过转换“args[0].toString()”并将其生成一个JSONArray来修复它,而不仅仅是args[0]。

所以,而不是

jsonarray = new JSONArray(args[0]);

我不得不这么做:

String data = args[0].toString();
JSONArray jsonarray = new JSONArray(data);
 类似资料:
  • 问题内容: 我想读这行,但是因为它以我开始有些困惑 我只需要使用“名称”并将所有另存为一个字符串。(字符串值将是:Jeff Bridges,Charles Grodin,Jessica Lange,John Randolph,Rene Auberjonois)。 这是我的代码: 问题答案: 如果您使用的是“名称”,为什么您的代码片段看起来像是试图获取“字符”的尝试? 无论如何,这与任何其他类似于列

  • 问题内容: 我需要解析Java(Android)中来自AppEngine的DateTime字符串。该字符串如下所示:。它是某种标准格式吗?有没有比使用custom更简单的方法? 问题答案: 非常简单,除了日期字符串由于其中的最后一个而有些偏离。只需替换并使用以下模式即可:

  • 问题内容: 我有JSON对象,如下所示: 我想在android中解析数据并将其存储到数据库中,但是我在Jsonobject中感到困惑,谢谢 问题答案: 以下是用于解析json字符串的代码段代码。请经历一下:

  • 问题内容: 我有一个json对象是这样的: 我试图这样解析: 但是我不知道如何访问动态名称。我们如何解析这样的JSON -注意-Ya的 所有值都带有引号,例如:“ Yg&R_” 问题答案: 试试这个动态的JSON解析器

  • 我正在使用来解析Json数据。我的Json数据如下: GsonParse.java 我使用以下方法来解析此JSON数据。 我面对以下错误。

  • 问题内容: 我是解析新手,找不到任何过时且未提出更多问题的教程。我正在尝试解析一个简单的xml文件url。xml非常简单: 并且只想将其保存为NSDictionary(标签作为键,数据作为值)。到目前为止,我所能成功完成的工作是在控制台中使用以下命令打印xml字符串: 我浏览过所有发现的在线教程,这些教程要么过时,要么过于复杂。任何帮助表示赞赏。 问题答案: 过程很简单: 创建对象,并向其传递数据