【问题标题】:Need help to debug json response需要帮助来调试 json 响应
【发布时间】:2022-01-14 11:42:08
【问题描述】:

我正在尝试以这种形式发送响应

{"files":[{"webViewLink":""},{"webViewLink":""}]}

但我得到了这样的回应

{"files":[{"webViewLink":"""}]}{"files":[{"webViewLink":"""}]}

这是我的 PHP 代码:

<?php

    $idtemp = extractfiles($fol_id, $email);
    foreach ($idtemp['items'] as $val) {
        $id = $val['id'];
        $val = array(
            "webViewLink" =>  'https://drive.google.com/file/d/'.$val['id'].'/view?usp=drivesdk"'
            );
        $enc = json_encode($val);
        $val = '{"files":['.$enc.']}';
        echo($val);

请帮助我修复我需要以这种方式响应的代码

{"files":[{"webViewLink":""},{"webViewLink":""}]}

【问题讨论】:

  • 使用json_encode制作JSON,不要自己追加
  • 你能回答这个问题吗,我试过了,但它返回同样的东西。
  • 您能添加一个示例输入吗? minimal reproducible example 对我们帮助您非常有用。考虑阅读How to Ask。
  • 另外,您当前的代码缺少 } 的结束 foreach!

标签: php json


【解决方案1】:

你不应该这样做$val = '{"files":['.$enc.']}';

使用json_encode制作json,不要手动操作


  1. 在循环外创建一个带有所需键的对象
  2. 将任何内容推送到所需的数组
  3. 转成json
<?php

    $idtemp = extractfiles($fol_id, $email);
    $json = (object) [
        "files" => []
    ];
    foreach ($idtemp['items'] as $val) {
        $json->files[] = (object) [
            "webViewLink" => 'https://drive.google.com/file/d/'.$val['id'].'/view?usp=drivesdk"'
        ];
    }
    $json = json_encode($json);
    echo($json);

如果我使用一些虚拟值来创建示例,则输出为:

{
    "files": [
        {
            "webViewLink": "https://drive.google.com/file/d/1/view?usp=drivesdk\""
        },
        {
            "webViewLink": "https://drive.google.com/file/d/2/view?usp=drivesdk\""
        },
        {
            "webViewLink": "https://drive.google.com/file/d/3/view?usp=drivesdk\""
        }
    ]
}

你可以在this online demo中测试

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多