【问题标题】:PHP Curl Post - JSON Decoding ErrorPHP Curl Post - JSON 解码错误
【发布时间】:2013-08-27 13:28:48
【问题描述】:

我需要使用 PHP curl 来发布 JSON 数据。搜索这个网站后,我找到了一些例子,得知数据应该作为数组提交,但我仍然得到“({“message”:“cjson解码错误”,“code”:500,“error”:true})”每次发布数据后都会出错。

原始数据如下所示(来自 firefox live httpd headers):

{"nodes":[{"id":"","type":"some_type","parentId":"ROOT","refId":null,"href":"","text":"New","desc":"","tags":"","cr":123}],"revision":11,"token":"some_token"}

现在,这是我尝试通过 curl 提交的数据

json_encode(array("nodes"=>array("id"=>"", "type"=>"some_type", "parentId"=>"ROOT", "refId"=>"", "href"=>"", "text"=>"New", "desc"=>"", "tags"=>"", "cr"=>"123"), "revision"=>"11", "token"=>"some_token"));

谁能告诉我这里出了什么问题?

【问题讨论】:

    标签: php json post curl decode


    【解决方案1】:

    如果您回显第二行,您会发现它与您在第一行中发布的内容不匹配。

    正确的版本如下:

    json_encode(array("nodes"=>array(array("id"=>"", "type"=>"some_type", "parentId"=>"ROOT", "refId"=>"", "href"=>"", "text"=>"New", "desc"=>"", "tags"=>"", "cr"=>"123")), "revision"=>"11", "token"=>"some_token"));
    

    现在它与您在第一行中发布的结构相同。 (请参阅节点列表周围的附加数组。您需要该附加数组(),因为该格式似乎支持发布多个“节点”的想法。

    【讨论】:

    • 不幸的是,仍然显示相同的错误。需要多玩一会儿……
    • 如果您比较两个不同的 HTTP 请求(您要模拟的一个和您手动启动的一个) - 有什么区别吗?
    • 我如何比较它们?我只是简单地使用 livehttpdheaders 插件来查看正在发布的 dyte,然后使用 curl 发布相同的内容(包括引用者等)
    • 如果您回显我在上面发布的 json_encode 部分,您将获得 JSON 格式的数组版本,它应该与您最初发布的内容完全相同。然后,您可以逐个字符地比较该字符以获得完全相同的 JSON。你知道我的意思吗?
    • 谢谢,这是有道理的。我按照建议做了,发现 ORIGINAL 请求有额外的 [ 和 ] 标签(除了那些,一切都一样):原始数据{"nodes":[{"id":"","type":"some_type","parentId":"ROOT","refId":null,"href":"","text":"New","desc":"","tags":"","cr":123}],"revision":11,"token":"some_token"}我的数据:{"nodes":{"id":"","type":"some_type","parentId":"ROOT","refId":null,"href":"","text":"New","desc":"","tags":"","cr":123},"revision":"11","token":"some_token"}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多