当前位置: 首页 > 面试题库 >

PHP json_decode()使用有效的JSON返回NULL?

董建茗
2023-03-14
问题内容

我将这个JSON对象存储在纯文本文件中:

{
    "MySQL": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "DatabaseName": "(dbname)"
    },
    "Ftp": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "RootFolder": "(rf)"
    },
    "BasePath": "../../bin/",
    "NotesAppPath": "notas",
    "SearchAppPath": "buscar",
    "BaseUrl": "http:\/\/montemaiztusitio.com.ar",
    "InitialExtensions": [
        "nem.mysqlhandler",
        "nem.string",
        "nem.colour",
        "nem.filesystem",
        "nem.rss",
        "nem.date",
        "nem.template",
        "nem.media",
        "nem.measuring",
        "nem.weather",
        "nem.currency"
    ],
    "MediaPath": "media",
    "MediaGalleriesTable": "journal_media_galleries",
    "MediaTable": "journal_media",
    "Journal": {
        "AllowedAdFileFormats": [
            "flv:1",
            "jpg:2",
            "gif:3",
            "png:4",
            "swf:5"
        ],
        "AdColumnId": "3",
        "RSSLinkFormat": "%DOMAIN%\/notas\/%YEAR%-%MONTH%-%DAY%\/%TITLE%/",
        "FrontendLayout": "Flat",
        "AdPath": "ad",
        "SiteTitle": "Monte Maíz: Tu Sitio",
        "GlobalSiteDescription": "Periódico local de Monte Maíz.",
        "MoreInfoAt": "Más información aquí, en el Periódico local de Monte Maíz.",
        "TemplatePath": "templates",
        "WeatherSource": "accuweather:SAM|AR|AR005|MONTE MAIZ",
        "WeatherMeasureType": "1",
        "CurrencySource": "cotizacion-monedas:Dolar|Euro|Real",
        "TimesSingular": "vez",
        "TimesPlural": "veces"
    }
}

当我尝试使用解码时json_decode(),它返回NULL。为什么?该文件是可读的(我尝试了回显file_get_contents(),但工作正常)。

我已经针对http://jsonlint.com/测试了JSON ,它非常有效。

怎么了

在Google上寻找答案,我回到SO:调用webservice后json_decode返回NULL。我的JSON文件具有UTFBOM序列(一些不应包含的二进制字符),因此破坏了JSON结构。进入十六进制编辑器,删除了字节。一切恢复正常。为什么会这样呢?
因为我使用Microsoft Windows的记事本编辑了文件。 好主意!


问题答案:

可能是特殊字符的编码。您可以要求 json_last_error()
获得确切的信息。

更新:问题已解决,请查看问题中的“解决方案”段落。



 类似资料:
  • 问题内容: 我将这个JSON对象存储在纯文本文件中: 当我尝试用解码时,它返回NULL。为什么?该文件是可读的(我尝试了回显,但工作正常)。 我已经针对http://jsonlint.com/测试了JSON ,它是完全有效的。 怎么了 问题答案: 它可以是特殊字符的编码。您可以要求 json_last_error() 获得确切的信息。 更新:问题已解决,请查看问题中的“解决方案”段落。

  • 问题内容: 我正在为我的网站创建自动完成功能。到目前为止,javascript部分已经结束。另外,我可以获取匹配用户的MembershipUser对象。 我需要以以下格式返回JSON: 这是ashx中的代码: 如何以所需格式返回json?谢谢。 问题答案:

  • 合同代码: 如何在API中调用函数: 的值不是对的有效查询吗? 可能我使用的函数是错误的,因为文档中提到函数返回stateQueryInterator。有人能帮助我在javascript中如何使用函数吗?谢谢

  • 问题内容: 我想我已经找到了错误所在: 我进行调试,得到以下结果(我输入了555和欧元): 因此看来,用于解码JSON对象的PHP函数在某处做错了。有什么帮助吗? 问题答案: Google给您的响应不是有效的JSON,因为未引用标签。您必须自己解析。 输出:

  • 使用接受JSON请求体的Spring MVC开发REST Web服务。并进一步处理接收到的消息。我使用以下:Eclipse,Tomcat,Spring 3.0.1,Jackson lib,Curl来测试Web服务 返回 我的控制器类 我的人类

  • 问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一