【问题标题】:json_encode adds double quotes when parsedjson_encode 解析时加双引号
【发布时间】:2013-08-15 09:18:27
【问题描述】:

我在 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);
            }
        }

【问题讨论】:

  • 您如何“尝试验证”json?另外你从哪里得到那个 json 字符串?
  • 你的 javascript 代码是什么样子的?
  • 如果你用 php 回显 javascript 代码(顺便说一句 JSON 代表 JavaScript Object Notation),这应该不是问题,所以很明显你做错了什么。发布使用此 php echoed json 的 js 代码。
  • 你是如何构建 JS 的?你是不是不小心用了var json="&lt;?php echo json_encode(...);?&gt;";
  • 我在上面测试了你的代码,结果就像你想要的结果。也许您应该在 javascript 的一侧显示更多代码。

标签: php javascript json


【解决方案1】:

您似乎正在对其进行双重编码。要么这样,要么你正在对其进行编码,然后将其转储在引号内。

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

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

那就可以走了,不需要别的了。

【讨论】:

    【解决方案2】:
    echo json_encode(
    
    array(
      "results" => 
         array(
            array("user" => $member['user'], "company" => $member['company'] ),
            array("user" => $member['user2'], "company" => $member['company2'] )
           )
         )
     );
    

    【讨论】:

    • 你在这里做了什么改变?除了缩进?
    • 如果你仔细看他的json编码,结构不正确array("user" =&gt; $member['user']),array("company" =&gt; $member['company']))对吧??
    • 可能虽然它不是我的数据,所以您必须询问@user123_456
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 2021-11-11
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多