php - 处理传入 JSONObject 的字符串

标签 php android json pubnub

在我的 PHP 服务器中,我将应该是编码的 JSONObject 传递到 PubNub channel 中:

$post_data = array("type"=> "groupMessage", "data" => array("chatUser" => "SERVER", "chatMsg" => "Now lets talk", "chatTime"=>1446514201516));
$post_data = json_encode($post_data, JSON_FORCE_OBJECT);
$info = $pubnub->publish('MainChat', $post_data);

请注意,我使用的是 JSON_FORCE_OBJECT,它应该确保 JSONObject 的输出。引用日志,输出显示为:

{"type":"groupMessage","data":{"chatUser":"SERVER","chatMsg":"Now lets talk","chatTime":1446514201516}}

但是,在客户端 Android 应用程序中,测试 channel 上传入消息的类会返回这是一个字符串对象,而不是 JSON,并且不会通过 if (message instanceof JSONObject) {:

            Log.d("message class", message.getClass().toString());

            if (message instanceof JSONObject) {
                try {
                    JSONObject jsonObj = (JSONObject) message;
                    Log.d("jsonObj is ", jsonObj.toString());

                    JSONObject json = jsonObj.getJSONObject("data");
                    final String name = json.getString(Constants.JSON_USER);
                    Log.d("name is: ", name);
                    final String msg = json.getString(Constants.JSON_MSG);
                    Log.d("msg is: ", msg);
                    final long time = json.getLong(Constants.JSON_TIME);
                    Log.d("time is: ", String.valueOf(time) );
                    if (name.equals(mPubNub.getUUID())) return; // Ignore own messages
                    final ChatMessage chatMsg = new ChatMessage(name, msg, time);
                    presentActivity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // Adding messages published to the channel
                            mChatAdapter.addMessage(chatMsg);
                        }
                    });
                } catch (JSONException e) {
                    e.printStackTrace();
                }

如何确保 PHP 将 JSONObject 传递到 channel 中?

最佳答案

您在设备上获得的响应(消息)仍然只是一个需要转换为 JSONObject() 的字符串。

JSONObject jsonObj = new JSONObject(message);

现在可以检查它是否是 JSONObject() 的正确实例;)

关于php - 处理传入 JSONObject 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499109/

相关文章:

php - 使用一个表来保存另一个更大表的 COUNT/SUM 是不是糟糕的设计?

php - MySQL 大型数据库查询速度慢

java - 更改 Spring Boot 应用程序中对象的默认 json

php - laravel 5.4 - php artisan migrate 命令不起作用

php - 循环期间的服务器响应(状态更新)

android - RecyclerView 的可扩展 TextView

android - 如何旋转 Sprite 并 move

android - 如何为 Android 开发者切换动画?

javascript - 使用 JS 从 Solr 获取 JSONfacet_queries

c# - Newtonsoft Json 将值 {null} 转换为类型 'System.Int32' 时出错