为了账号安全,请及时绑定邮箱和手机立即绑定

未解析嵌套在 JSON 响应中的值

未解析嵌套在 JSON 响应中的值

PHP
喵喵时光机 2021-09-05 17:01:41
我正在对端点进行 REST 调用,但遇到了内部属性保持字符串而不转换为 Javascript 的问题。这是我得到的:"43750": {    "taskId": 43750,    "statusId": 1,    "set_at": "2019-03-27 16:20:51",    "userId": 2,    "value": "[{\"text\":\"Recreational Vehicle\"}]" <-- Problem},这是我应该得到的(旧 API 响应):"43750": {  "userId": "2",  "timestamp": "2019-03-27 16:20:51",  "value": [      {         "text": "Recreational Vehicle"      }   ],   "statusId": "1"},这些是来自 Chrome 的 DevTools 网络部分的响应选项卡的片段。出于某种原因,对象数组没有被解析为 javascript,而是剩余的字符串。我在 PHP 中将 Content Type 设置为 json 并在请求中使用了 json 数据类型。我错过了什么?前端  $.ajax({        type: 'POST',        dataType: 'json',        url: API_URL,        data: {           action: 'getProject',           projectId: this.getActiveProjectId()        },        success: function (response) {            console.log('[AJAX RESPONSE] LOAD ACTIVE PROJECT', response);            debugger;        }    });后端<?php$default_options = [            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,            PDO::ATTR_EMULATE_PREPARES => false,            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,        ];$pdo = new PDO(    sprintf(    "dblib:host=%s;dbname=%s",        $server,        $database    ),    $user,    $pass,    $default_options );/* Determine action, handle request *//* Do PDO Query */    $tasks = $statement->fetchAll();header("Access-Control-Allow-Origin: *");header('Content-Type: application/json');echo json_encode($tasks, JSON_PRETTY_PRINT);
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

value表中的列包含一个JSON字符串。您要么需要在发送响应之前对其进行解码:


foreach ($tasks as &$task) {

    $task['value'] = json_decode($task['value']);

}

或者在 JavaScript 中执行:


success: function(response) {

    response.forEach(r => r.value = JSON.parse(r.value));

    // rest of success function

}


查看完整回答
反对 回复 2021-09-05
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信