从String创建新的JSONObject返回Null - JAVA / Android

时间:2016-12-08 16:25:19

标签: java android json

我试图从String创建一个新的JSONObject但是由于某种原因,新的JSONObject始终为null - 我不确定为什么。

任何建议都表示赞赏。

来源:

JSONObject messagesObj;


    String mArr = intent.getStringExtra("msgArr");

            try {
                if (mArr != null)
                    messagesObj = new JSONObject(mArr);

                if (messagesObj != null)
                    populateMessages(messagesObj);
                DataManager.clientChatMarkMessagesSeen(chatId);
            } catch (JSONException e) {
            //    DataManager.clientChatLoad(this);
                e.printStackTrace();
            }

值:

String mArr = [{"message":"User has joined the chat.","type":"agent","created":"2016-12-07 17:35:09","name":"User"},{"message":"Hello World?","type":"agent","created":"2016-12-07 17:35:17","name":"User"},{"message":"User has left the chat.","type":"agent","created":"2016-12-07 17:38:40","name":"User"}]

3 个答案:

答案 0 :(得分:3)

因为那不是一个json对象 - 它是一个JSONArray。尝试创建JSONArray而不是JSONObject

答案 1 :(得分:0)

字符串是json数组而不是object ..请看根节点不是{}

像这个对象数组一样修改字符串

String mArr = {“results”:[{“message”:“用户已加入聊天。”,“类型”:“代理”,“已创建”:“2016-12-07 17:35:09” ,“name”:“User”},{“message”:“Hello World?”,“type”:“agent”,“created”:“2016-12-07 17:35:17”,“name”: “用户”},{“消息”:“用户已离开聊天。”,“类型”:“代理”,“已创建”:“2016-12-07 17:38:40”,“名称”:“用户“}]}

答案 2 :(得分:0)

使用JSONArray array = new JSONArray(“string here”)。如果它以方括号开头,则为数组。