为什么我得到"使用json_encode时

时间:2017-09-24 13:37:56

标签: php json laravel

我回来了一些json

$keywords = Auth::user()->keywords;
return json_encode($keywords);

它返回这样的东西。

{"id":1,"response":"qwrewqrqw","alt_response":"","keyword":"L0F3LZ","user_id":221,"extra_charge":"$0.00","campaign_id":0,"type":"DEMO","responses":0,"next_billing_date":"2017-10-24","status":"active"}

如何让它返回常规JSON。我之前从未遇到过这个问题。它实际上只是突然开始发生,我只注意到它,因为我的JSON.parse($ keywords)失败了。所以我控制台记录它,并得到你上面看到的。

有什么想法吗?

到目前为止,我目前的解决方法是做...

 var data = JSON.parse(keywords.replace(/"/g,'"'));

哪个工作正常并给我这个对象。但是......如果一个字段包含空格或换行符,则会中断。我怎样才能获得常规的旧JSON而不是这个& quot crap。

1 个答案:

答案 0 :(得分:2)

在Blade中,默认行为是转义字符。所以当你这样做时

{{ $yourJSON }}
它正在逃避报价,导致您遇到问题。要避免这种情况,请将其更改为

{!! $yourJSON !!}

所以它不会逃脱它,你在解析JSON时遇到了问题。

Laravel 5中的默认行为发生了变化(以前默认情况下它没有被转义),这可能就是你突然遇到这种情况的原因。

Blade documentation