Обработка строки, переданной в JSONObject

На моем PHP-сервере я передаю то, что должно быть закодированным JSONObject, в канал PubNub как:

$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 тестирование класса входящего сообщения на канале показывает, что это объект String, а не 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 в канал?

1

Решение

Ответ (сообщение), которое вы получаете на своем устройстве, все еще является строкой, которую необходимо преобразовать в JSONObject ().

JSONObject jsonObj = new JSONObject(message);

Теперь можно проверить, является ли это правильным экземпляром JSONObject ();)

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]