华域联盟 PHP 关于php:???在返回的 JSON 结果中 – 数据看起来不像它应该的那样

关于php:???在返回的 JSON 结果中 – 数据看起来不像它应该的那样

我使用 JSON 从 url 请求中获取了一些数据,代码如下:

1
2
3
4
5
$url = 'https://recruit.zoho.com/ats/private/xml/JobOpenings/getRecords?authtoken=$at&scope=recruitapi' ;
$request = new WP_Http ;
$result = $request -> request ( $url , $data = array ( ) ) ;
$input = json_encode ( $result , true ) ;
var_dump ( $input ) ;

这段代码运行得非常好,只是输出的数据看起来很奇怪,例如:

1
2
"content-encoding" : "gzip" , "vary" : "Accept-Encoding" , "strict-transport-security" : "max-age=15768000" } , "body" : "\\u003C?xml version=" 1.0 " encoding="UTF - 8 " ?\\u003E\
\\u003Cresponse uri="
\\ /ats\\ / private\\ /xml\\ /JobOpenings\\ /getRecords "\\u003E\\u003Cresult\\u003E\\u003CJobOpenings\\u003E\\u003Crow no=" 1 "\\u003E\\u003CFL val="JOBOPENINGID "\\u003E\\u003C![CDATA[213748000001263043]]\\u003E\\u003C\\/FL\\u003E\\u003CFL val="Published in website "\\u003E\\u003C![CDATA[false]]\\u003E\\u003C\\/FL\\u003E\\u003CFL val="Modified by "\\u003E\\u003C![CDATA

经过一些研究,我意识到问题的一部分很可能是因为我请求的数据中有 ?|、?? 和 ?¥。其他人是这样解决问题的:

1 $input = json_encode ( utf8_decode ( $result ) , true ) ;

但是这给了我这个错误:

1 Warning : utf8_decode ( ) expects parameter 1 to be string , array given in

我知道数组不是字符串,但我该怎么处理呢?它似乎对其他人有用,我不知道为什么。

谢谢。

编辑:

我在打印数据的开头注意到了这一点。

1 string ( 31486 ) "{"headers ":{"server ":"ZGS "," date ":"Wed , 12 Aug 2015 13 : 59 : 32 GMT ","content -type ":"text\\ /xml ;charset =utf - 8 "

这是否意味着它已经是 UTF-8 而我完全关闭了?



相关讨论

  • 困惑...这 response uri = ... 究竟是从哪里来的?那是该网址返回的原始文本?或者通过 json_decode 运行它后得到什么?
  • 这是由 var_dump($input) 引起的文本片段。对于任何混淆,我很抱歉,我对 PHP 和 JSON 都很陌生。
  • 那是不可能的。 response uri =... 不是有效的 json。 json_encode() 不可能产生这样的字符串。 "response uri =..." ,带有 " 引号,可能是有效的 json。
  • \\\\\\\<?xml 版本=\\\\\\"1.0\\\\\\" 编码=\\\\\\"UTF-8\\\\\\" ?\\\\\\\>\\\\
    \\\\\\\\u003响应 uri=\\\\\\"\\\\\\\\/ats\\\\\\\\/private\\\\\\\\/xml\\\\\\\\/JobOpenings\\\\\\\\/getRecords\\\\\\\\`","链接":"https://stackoverflow.com/questions/31967389/???-in-returned-json-result-the-data-doesnt-look-like-its-supposed-to#comment51842260_31967389","body":"也许更多上下文会有所帮助:`Accept-Encoding","strict-transport-security":"max-age=15768??000
  • 我还更新了帖子中的片段,希望它能更清楚地说明问题。
  • u003c 和 u003e 是 < 和 > ,所以你得到的是字符串中的转义 XML。


您在 $result 中收到的是一个 utf-8 字符串,它似乎代表某种 url。无论如何, json_encode 会将任何 unicode 字符转义为 \\u008E 字符串。

如果您不想转义 utf-8 字符,这个问题与您相关:为什么 PHP json_encode 函数将 UTF-8 字符串转换为十六进制实体?

就我所见,一切似乎都运行良好。虽然,您提供给我们的字符串似乎是 troncated,但我想这是您的错误。



相关讨论

  • 嘿,这似乎改变了一些事情,但仍然看不到? ? ? "Modified time\\\"\\\\u003E\\\\u003C![CDATA[20 Jul-2015]]\\\\u003E\\\\u003C\\\\\\/FL\\\\u003E\\\\u003CFL val=\\\"Job nr.\\\"\\\\u003E\\\\u003C![CDATA[93]]\\\\u003E\\\\u003C\\\\\\/FL\\\\u003E??\\\\u003CFL val=\\\"Stilling\\\"\\\\u003E\\\\u003C![CDATA[Senior Sales Manager]]\\\\u003E\\\\u003C\\\\\\/FL\\\\u003E\\\\u003CFL val=\\\"Kunde\\\"\\\\u003E\\\\u003C![CDATA[Top Search Group]]\\\\u003E\\\\u003C\\\\\\/FL\\\\u003E\\\\u003CFL val=\\\"Kundeansvarlig\\\"\\\\u003E\\\\u003C!
  • 我做了以下事情: $input = json_encode($result, true); \t\t\t\t$input_unicode = json_encode($input, JSON_UNESCAPED_UNICODE); \t\t\t\tvar_dump($input_unicode);
  • 为什么你 json_encode 两次?你只需要做一次。如果你这样做两次,一切都会很糟糕。只需执行 $input = json_encode($result, JSON_UNESCPAED_UNICODE); 仔细阅读文档:se2.php.net/json_encode
  • 谢谢!让我更进一步,但现在身体看起来像这样,我不明白: "\
    <\\/FL><\\/FL><\\/FL><\\/FL><\\/FL><\\/FL><\\/FL><\\/FL><\\/FL><\\/??FL><\\/FL><\\/FL><\\/FL??><\\/row><\\/FL><\\/FL>??<\\/FL><\\/FL><\\/FL><\\??/FL><\\/FL><\\/FL><\\/F??L><\\/FL><\\/FL><\\/FL>??<\\/FL><\\/FL><\\/FL><\\??/FL><\\/FL><\\/row>


本文由 华域联盟 原创撰写:华域联盟 » 关于php:???在返回的 JSON 结果中 – 数据看起来不像它应该的那样

转载请保留出处和原文链接:https://www.cnhackhy.com/158101.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部