草庐IT

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

codeneng 2023-03-28 原文

??? in returned JSON result - the data doesn't look like it's supposed to

我使用 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
  • 我还更新了帖子中的片段,希望它能更清楚地说明问题。
  • u003cu003e<>,所以你得到的是字符串中的转义 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 结果中 – 数据看起来不像它应该的那样的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  3. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  4. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  5. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  6. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  7. ruby - Ruby 中的隐式返回值是怎么回事? - 2

    所以我开始关注ruby​​,很多东西看起来不错,但我对隐式return语句很反感。我理解默认情况下让所有内容返回self或nil但不是语句的最后一个值。对我来说,它看起来非常脆弱(尤其是)如果你正在使用一个不打算返回某些东西的方法(尤其是一个改变状态/破坏性方法的函数!),其他人可能最终依赖于一个返回对方法的目的并不重要,并且有很大的改变机会。隐式返回有什么意义?有没有办法让事情变得更简单?总是有返回以防止隐含返回被认为是好的做法吗?我是不是太担心这个了?附言当人们想要从方法中返回特定的东西时,他们是否经常使用隐式返回,这不是让你组中的其他人更容易破坏彼此的代码吗?当然,记录一切并给出

  8. ruby-on-rails - 如何使用 Rack 接收 JSON 对象 - 2

    我有一个非常简单的RubyRack服务器,例如:app=Proc.newdo|env|req=Rack::Request.new(env).paramspreq.inspect[200,{'Content-Type'=>'text/plain'},['Somebody']]endRack::Handler::Thin.run(app,:Port=>4001,:threaded=>true)每当我使用JSON对象向服务器发送POSTHTTP请求时:{"session":{"accountId":String,"callId":String,"from":Object,"headers":

  9. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  10. ruby-on-rails - ruby 日期方程不返回预期的真值 - 2

    为什么以下不同?Time.now.end_of_day==Time.now.end_of_day-0.days#falseTime.now.end_of_day.to_s==Time.now.end_of_day-0.days.to_s#true 最佳答案 因为纳秒数不同:ruby-1.9.2-p180:014>(Time.now.end_of_day-0.days).nsec=>999999000ruby-1.9.2-p180:015>Time.now.end_of_day.nsec=>999999998

随机推荐