json对象成为字符串,因为添加了双引号?

时间:2019-03-18 19:47:51

标签: php jquery mysql json

我有来自MySql的数据,回答如下: How to SQL query parent-child for specific JSON format?。基本上,我使用JSON_OBJECT()来查询它,产生结果:

results <-- The column name

{"projects": "project_name": "project 1", [2nd layer stuff]}  <-- the row

太棒了。 MySql为我做了json的事情。我对PHP函数进行了ajax调用,以将其传递到Web服务器上。:

myPhpFunction () {
    //some usual PDO code
    echo json_encode($query_result);
}

在JS上,我进行了jQuery ajax调用:

var ajaxRequest =
$.ajax({
        type: 'post',
        url: '../includes/ajax.php',
        data: 'action' : 'myPhpFunction',
        dataType: 'json'
      });

      ajaxRequest.done(function(data) { 
        //$.each(data[0].results.projects, function(key, val){ 
            //I want to access each stuff in the object here
        //}
        $('#ph-projects').append(JSON.stringify(data)); //testing it out
      }

这时我遇到的问题是,我的对象data输出如下:

{ "results": "{...}" }

由于这些双引号,结果值是一个字符串!

这让我发疯。我是否错过了防止这种情况发生的步骤?

1 个答案:

答案 0 :(得分:0)

json_encode()可以正常工作,因为它可以根据您的问题({ "results": "{...}" }的建议将结果作为JSON对象提供。 PDO中的JSON_OBJECT()返回一个字符串就好了,正如名称​​ JSON 所建议的那样,它的 JavaScript Object Notation 以易于理解的格式显示。

您可以在服务器端进行操作:

json_encode(['results'=> json_decode($query_result['results'])]);

(在客户端)

function(data){ 
    data.results = JSON.parse(data.results);
    // Your json data here
}