如何解码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_encodejson_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 4 的 JSON 文件?

如何使用具有数组的 2 个结构解码 JSON

显示比“无法解码 JSON 对象”更好的错误消息

Swift Codable - 如何编码和解码字符串化的 JSON 值?

企业级工作流解决方案--微服务Tcp消息传输模型之消息编解码

如何使用来自 Kafka 的 Python 解码/反序列化 Avro