【问题标题】:How can I transfer JSON CURL to JSON PHP via API?如何通过 API 将 JSON CURL 传输到 JSON PHP?
【发布时间】:2021-11-12 03:53:53
【问题描述】:

我有一个 cURL 请求的模板代码:通过 API 创建 1 位新患者

我需要把它转成 PHP

curl --location --request POST 'https://www.b2bmd.app/api.php?fn=patient-info' \
--form 'firstname="Test Firstname"' \
--form 'lastname="Test Lastname"' \
--form 'email="abc@gmail.com"' \
--form 'phone="(000) 000-0000"' \
--form 'address1="Address"' \
--form 'qas="{
\"q\": {
\"1\": \"Can you speak?\",
\"2\": \"Can you hear?\"
},
\"a\": {
\"1\": \"Yes\",
\"2\": \"Yes \"
}
}"' \

还有我的代码

 
        $ch = curl_init();
        $myArray = array(
            array('Can you speak?','Can you hear?'),
            array('Yes','Yes')
        );
        $json = json_encode($myArray);
        
        
        /**add new **/
        
        $url = "https://www.b2bmd.app/api.php?fn=patient-info";
         $dataarr = array(
        "firstname" => "John",
        "lastname" => "Mike",
        "email" => "John20124@yahoo.com",
        "phone" => "(781) 921-4790",
        "address1" => "7231 street 4",
        "qas" => $json
        ); 
        
        $data = http_build_query($dataarr);
        
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $resp = curl_exec($ch); 
        if($e = curl_error($ch))
        {
            echo $e;
        }
        else
        {
            $decode = json_decode($resp, true); 
            
            print_r($decode);
            
            
        }
        curl_close($ch);

我可以全部转成php代码。

但只有 qas 是我无法转换为 php 的 JSON 样式。我尝试了很多方法,但仍然收到错误“无效的 QAS JSON 字符串”。我都试过了,还是不行。

【问题讨论】:

  • 向我们展示“我尝试了一切”的含义。你试过什么?你遇到了什么错误?
  • 您希望所有内容都以 json 格式发送,而不仅仅是“qas”吗?
  • 这是我的错误:Array ([code] => Array ([0] => Not valid QAS JSON string.) [message] => Request Failed)
  • 嗨,费尔斯。我只想要 'qas' 到 json。

标签: javascript php curl


【解决方案1】:

调试(和编程)的第一条规则:解决问题

您已确定问题出在“qas”参数上,并且它必须是正确的 JSON 字符串,因此请忽略所有代码,除了生成该字符串的部分:

$myArray = array(
    array('Can you speak?','Can you hear?'),
    array('Yes','Yes')
);
$json = json_encode($myArray);
echo $json;

这给出了:

[["Can you speak?","Can you hear?"],["Yes","Yes"]]

但是你成功的请求是这样的:

{
    "q": {
        "1": "Can you speak?",
        "2": "Can you hear?"
    },
    "a": {
        "1": "Yes",
        "2": "Yes"
    }
}

因此,您的示例缺少围绕问题和答案的“q”和“a”键,以及其中的“1”和“2”键。

解决方案是简单地将这些键添加到 PHP 数组中的相同位置:

$myArray = array(
    "q" => array(1=>'Can you speak?',2=>'Can you hear?'),
    "a" => array(1=>'Yes',2=>'Yes')
);
$json = json_encode($myArray);
echo $json;

这给出了:

{"q":{"1":"Can you speak?","2":"Can you hear?"},"a":{"1":"Yes","2":"Yes"}}

现在您已经拥有了您认为正确的 JSON,您可以将其重新插入您的 curl 代码并查看它是否有效。如果没有,请重复该过程:缩小问题范围,直接查看数据。

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2014-02-11
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2015-07-17
    • 2015-11-17
    相关资源
    最近更新 更多