【问题标题】:JSON Array Syntax for PHP HTTP POST RequestsPHP HTTP POST 请求的 JSON 数组语法
【发布时间】:2017-05-29 18:17:30
【问题描述】:

我正在尝试编写一个 PHP 脚本来查询我有权访问的 API。此 API 需要 JSON 正文发布请求,条件之一是

"Analyses": ["Phenotype"]

请注意,该字符串的第二部分周围没有双引号。当我尝试使用 Httpful 传递下面的这个脚本时,这个脚本给了我一个 HTTP 500 结果。如果没有分析条件,我会在 JSON 格式输出中得到正确的响应(尽管要求分析信息时出现错误)。我认为这与分析字符串的格式/语法有关,我不确定该怎么做。如果我使用单引号,我会收到 500 错误。如果我完全忽略引号,它会假定它是一个数组并给我一个对象错误“对象引用未设置为对象的实例”。我不知道如何在没有引号的情况下传递该格式。

$response = \Httpful\Request::post($url)
        ->sendsJson()
        ->body('{"apiUserKey":"abcde",
                "apiUserId":"efghi",
                "Species":"9606",
                "Analyses": "["Phenotype"]"
                 }')
        ->send();

谢谢!

【问题讨论】:

  • JSON 中不允许使用单引号。那个错误Object reference not set to an instance of an object 与.net 相关吗?如果他们需要一个数组,那么"Analyses": ["Phenotype", "B", "C"] 应该是有效的?

标签: php json httpful


【解决方案1】:

您的示例几乎是正确的,但是您将一组双引号包含在内。您正试图在“分析”字段中传递一个字符串数组。数组本身不需要用双引号。

$response = \Httpful\Request::post($url)
    ->sendsJson()
    ->body('{"apiUserKey":"abcde",
            "apiUserId":"efghi",
            "Species":"9606",
            "Analyses": ["Phenotype"]
             }')
    ->send();

【讨论】:

  • 如果我运行您建议的脚本,我会收到“对象引用未设置为对象的实例”错误。上面的罗伯特说可能是.net错误?通常,Analyses 标准将是多个数组(例如 [“Phenotype”、“Tissue”])。我确实尝试了 json_encode(array...) 并且它返回了一个空白屏幕而不是 500 错误。
  • 恐怕您将不得不联系远程服务的开发人员。因为它是字符串数组的有效 JSON。
  • 我与开发人员交谈,错误实际上不是来自分析部分,而是错误地标记了“物种”,而应该是“物种 ID”。您的格式确实解决了问题,并将其标记为正确答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2013-12-23
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多