如何解码json消息
Posted
技术标签:
【中文标题】如何解码json消息【英文标题】:how to decode json message 【发布时间】:2013-08-30 12:40:39 【问题描述】:我有以下 json 编码函数来显示 iphone 的推送通知..... 但我需要的只是将推送通知消息存储在数据库中...... 这样我就可以在使用 php 开发的网站中显示该消息.... 所以我需要解码这个json格式
private function _jsonEncode($array = false)
//Using json_encode if exists
if (function_exists('json_encode'))
return json_encode($array);
if (is_null($array))
return 'null';
if ($array === false)
return 'false';
if ($array === true)
return 'true';
if (is_scalar($array))
if (is_float($array))
return floatval(str_replace(",", ".", strval($array)));
if (is_string($array))
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $array) . '"';
else
return $array;
$isList = true;
for ($i = 0, reset($array); $i < count($array); $i++, next($array))
if (key($array) !== $i)
$isList = false;
break;
$result = array();
if ($isList)
foreach ($array as $v)
$result[] = $this->_jsonEncode($v);
return '[' . join(',', $result) . ']';
else
foreach ($array as $k => $v)
$result[] = $this->_jsonEncode($k) . ':' . $this->_jsonEncode($v);
return '' . join(',', $result) . '';
【问题讨论】:
缩进缩进缩进! 这是一个需求陈述,而不是一个问题。你有什么问题? 我是 json 新手,所以我需要这个 json 消息来解码 为什么要使用自定义函数编码,使用json_encode
和json_decode
那里没有与通知消息有关的代码。
【参考方案1】:
如果我是你,我会使用标准的 PHP 函数:
json_encodehttp://php.net/manual/en/function.json-encode.php
json_decode http://php.net/manual/en/function.json-decode.php
【讨论】:
不知道为什么这被否决了... PHP 内置函数有什么问题,为什么 OP 不能直接使用它们? 消息以这种格式编码:"aps":"alert":"mounika4","acme2":["bang","whiz"]...那么如何我可以解码这种格式的消息吗【参考方案2】:您可以简单地使用 php 的 json_decode() 函数来解码 json 数据。如果php提供了内置函数,则无需编写解码json的代码。
【讨论】:
当我使用它时,它会发出警告。警告...警告:json_decode() 期望参数 1 是字符串,数组在 /home/content/69/11486669/html/timesheet-manager 中给出/class_APNS.php 在第 719 行【参考方案3】:这是因为你的 json 字符串不正确。 您应该在“[”之后使用“”,并且应该在大括号字符串中定义索引。
例如
json_decode('"aps":"alert":"mounika4","acme2":["0":"bang","1":"whiz"]');
或
json_decode('"aps":"alert":"mounika4","acme2":"0":"bang","1":"whiz"');
你想要的任何数组格式。
【讨论】:
以上是关于如何解码json消息的主要内容,如果未能解决你的问题,请参考以下文章
Swift Codable - 如何编码和解码字符串化的 JSON 值?