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

字符串似乎是有效的JSON,但是`json_decode()`返回NULL

宦高岑
2023-03-14
问题内容

我想我已经找到了错误所在:

    $convertJSON = file_get_contents("http://www.google.com/ig/calculator?hl=en&q=" . $currencyValue . $currencySelectValue . "%3D%3FUSD", true);
    var_dump($convertJSON);
    $convertArr = json_decode($convertJSON, true);
    var_dump($convertArr);

我进行调试,得到以下结果(我输入了555和欧元):

string(68) "{lhs: "555 Euros",rhs: "796.64700 U.S. dollars",error: "",icc: true}"
NULL

因此看来,用于解码JSON对象的PHP函数在某处做错了。有什么帮助吗?


问题答案:

Google给您的响应不是有效的JSON,因为未引用标签。您必须自己解析。

$response = '{lhs: "555 Euros",rhs: "796.64700 U.S. dollars",error: "",icc: true';
preg_match('/rhs:\s*"([^"]+)"/', $response, $m);
echo $m[1];

输出:

796.64700 U.S. dollars


 类似资料:
  • 问题内容: 我将这个JSON对象存储在纯文本文件中: 当我尝试使用解码时,它返回NULL。为什么?该文件是可读的(我尝试了回显,但工作正常)。 我已经针对http://jsonlint.com/测试了JSON ,它非常有效。 怎么了 在Google上寻找答案,我回到SO:调用webservice后json_decode返回NULL。我的JSON文件具有UTFBOM序列(一些不应包含的二进制字符),

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

  • 以下endpoint以字符串形式返回用户名。 我如何构造它以返回一个json对象,该对象包含一个键,该键的值为该字符串(例如,{“user”:“joeuser”})?

  • 问题内容: 这是我自制的序列化课程: 这是网络方法 Ajax调用客户端 最后,我的回调方法 rsp.d是包含所有属性的字符串…属性本身是未定义的。我知道我在这里缺少一些简单的东西。 从服务器返回的字符串 问题答案: 您不应该手动序列化返回值。ASP.NET将为您做到这一点。尝试这样的事情: 如果您需要返回更动态的内容(例如您的示例似乎正在做的事情),则可以使用匿名类型:

  • 问题内容: 我正在尝试使用Python 3的内置JSON模块进行一些简单的JSON解析,并且从阅读有关SO和谷歌搜索的其他问题来看,这似乎应该非常简单。但是,我想我得到的是返回的字符串,而不是预期的字典。 首先,这是我尝试从中获取值的JSON。这只是Twitter API的一些输出 我将此字符串分配给名为json_string的变量,如下所示: 然后,当我尝试从“杰森”字典中获取特定密钥时: 我收

  • Spring WebFlux的新手,尝试在一个endpoint中返回字符串数组,出于某种原因,它返回了JSON数组的一个串联字符串istead。 用一些类包装它可以解决问题,但想知道如何实际返回字符串数组?返回例如数组