【问题标题】:How to properly setup json string for curl php如何为 curl php 正确设置 json 字符串
【发布时间】:2021-02-20 06:36:39
【问题描述】:

我有这两个例子。

示例 1:

$data1 = "{'username':'myUserName','password':'myPassWord'}";

和示例2:

$username= "myUserName";
$password= "myPassWord";
$data2 = "{'username':'".$username."','password':'".$password."'}";

我发送到 php 中的 cUrl 发布请求。 第一个示例有效,而第二个示例无效。这是为什么? 我还尝试在关联数组中设置变量,然后使用 json_encode,然后将其发送到 cUrl。除了第一个例子外,没有任何效果。我在这里发疯了。

【问题讨论】:

    标签: php arrays json curl


    【解决方案1】:

    对于有效的JSON,需要使用双引号,所以改

    $data2 = "{'username':'".$username."','password':'".$password."'}";
    

    $data2 = '{"username":"' . $username . '", "password":"' . $password . '"}';
    

    编辑:@LawrenceCherone 的尖锐评论,为确保您不会遇到带有 " 的用户名/密码的问题,请始终使用 json_encode(),例如:

    <?php
    $username= "myUserName";
    $password= 'my"PassWord'; // password containing "
    $arr = ['username' => $username, 'password' => $password];
    $result = json_encode($arr);
    

    输出$result:有效的JSON

    {"username":"myUserName","password":"my\"PassWord"}
    

    【讨论】:

    • 一些用户名/密码包含",这会破坏JSON
    • 正确,我诚挚地邀请@VeljkoStefanovic 接受您的回答。喜欢json_encode(compact(...))
    【解决方案2】:

    不要构建自己的 json!请改用json_encode(),并使用compact() 从全局变量中创建一个数组。

    <?php
    $username= "myUserName";
    $password= "myPassWord";
    
    $data2 = json_encode(compact('username', 'password'));
    

    使用$data2 表示什么,其中将包含:

    {"username":"myUserName","password":"myPassWord"}
    

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      相关资源
      最近更新 更多