json_encode在解析时添加双引号

时间:2013-08-15 09:18:28

标签: php javascript json

我在PHP中创建一个JSON对象:

echo json_encode(array("results" => array(array("user" => $member['user']),array("company" => $member['company']))));

在JavaScript中,我得到了类似的内容:

"{"results":[{"user":"David"},{"company":"something"}]}"

然后我尝试验证这个JSON并且它无效,但是当我在开头和结尾删除双引号时,它就是验证JSON。

我做错了什么? 这应该是这样的:

{"results":[{"user":"David"},{"company":"something"}]}

编辑:

我的AJAX调用的一部分:

success: function(response) 
        {
            for(var i=0;i<response.results.length;i++)
            {
              sessionStorage.setItem('user',response.results[i].user);
              sessionStorage.setItem('company',response.results[i].company);
            }
        }

3 个答案:

答案 0 :(得分:6)

您似乎对其进行了双重编码。要么是这样,要么就是对它进行编码然后将其转储到引号内。

要说清楚,你应该有这样的东西:

var myJSobject = <?php echo json_encode(...); ?>;

然后去,没有别的需要。

答案 1 :(得分:0)

echo json_encode(

array(
  "results" => 
     array(
        array("user" => $member['user'], "company" => $member['company'] ),
        array("user" => $member['user2'], "company" => $member['company2'] )
       )
     )
 );

答案 2 :(得分:0)

似乎你是从某个地方(从日志或其他东西?)复制带有引号的字符串,并尝试在其他地方验证。 echo json_encode(..)应该给你正确的Json字符串!