PHP使json_encode不要转义双引号

时间:2018-12-12 14:26:56

标签: php json laravel

我正在使用laravel,我想在数据库中播种json。所以我正在做的是json_encode($ array)。但这会将"\"放在每个" (双引号)上,这是我不想要的,如何从数组生成json而又不在每个双引号的fron中添加斜线?

这是数组:

$fields = [
            [
                'name' => 'image',
                'type' => 'file',
                'view' => 'image',
                'validations' => 'required|image',
                'label' => 'image'
            ]
        ];

当我使用json_encode($fields)时,它将像下面这样存储在数据库中:

"[{\"name\":\"image\",\"type\":\"file\",\"view\":\"image\",\"validations\":\"required|image\",\"label\":\"image\"}]"

我不希望这些斜杠,因为我不得不两次使用json_decode()。此外,Laravel中的$casts属性仅将它们解码一次。

FIX 这是我尝试过的并且有效的

我的模型中有这个

/**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'fields' => 'array',
        'translatable_fields' => 'array'
    ];

因此它应该自动解码。 这就是我从播种机将其保存到数据库中的方式:

$moduleTemplate = new ModuleTemplate;
        $moduleTemplate->translateOrNew('en')->name = 'Image with text';
        $moduleTemplate->translateOrNew('bg')->name = 'Снимка с тескт';
        $moduleTemplate->view = 'section-1';

        $fields = collect([
            [
                'name' => 'image',
                'type' => 'file',
                'view' => 'image',
                'validations' => 'required|image',
                'label' => 'image'
            ]
        ]);

        $moduleTemplate->fields = $fields->toJson();

        $translatableFields = collect([
            [
                'name' => 'title',
                'type' => 'text',
                'view' => 'input',
                'validations' => 'required|string|max:190',
                'label' => 'title'
            ],
            [
                'name' => 'text',
                'type' => 'wysiwyg',
                'view' => 'wysiwyg',
                'validations' => 'required|string',
                'label' => 'text'
            ]   
        ]);

        $moduleTemplate->translatable_fields = $translatableFields->toJson();
        $moduleTemplate->save();

它每次都在放斜线 我要做的只是简单地从阵列中删除->toJson()

1 个答案:

答案 0 :(得分:1)

只需从

更改报价格式
json_encode('"glossary": {"title": "example glossary"}');

json_encode("'glossary': {'title': 'example glossary'}");

根据您的评论进行编辑

使用

$fields = [ [ "name" => "image", 'type' => 'file', 'view' => 'image', 'validations' => 'required|image', 'label' => 'image' ] ];

当我这样做

json_encode($fields)

它返回我

[{"name":"image","type":"file","view":"image","validations":"required|image","label":"image"}]

使用Laravel 4.2,未经Laravel> 5进行测试

您的JSON数据可能有问题