Laravel:如何将字符串解析为json

时间:2014-11-13 06:01:30

标签: laravel

我已经从laravel创建了这段代码:

public function findConfig($id)
    {
        $config = DB::table('configuration')
                    ->join('model', 'model.configuration_id','=', 'configuration.id')
                    ->select('configuration.id','configuration.description', 'model.name','configuration.price')
                     ->where('configuration.id','=', $id)
                    ->get();

                     $encode = json_encode($config, JSON_UNESCAPED_SLASHES);
                     $response = Response::make($encode, 200);
                     $response->header('Content-Type', 'application/json');
                     return $response;
    }

然后返回就像这样

[{
"id": "1",
"description": "{\"item\":[{'colours\":[\"red\",\"blue\",\"green\"]},{\"motors\":[ {\"name\":\"450W/48V\",\"price\":\"2,000\"},{\"name\":\"550W/48V\", \"price\":\"3,000\" }] } ]}",
"name": "k5-A",
"price": "300000"
},
{
"id": "1",
"description": "{\"item\":[{'colours\":[\"red\",\"blue\",\"green\"]},{\"motors\":[ {\"name\":\"450W/48V\",\"price\":\"2,000\"},{\"name\":\"550W/48V\", \"price\":\"3,000\" }] } ]}",
"name": "r-A",
"price": "300000"
}
]

如何删除斜杠而不是string作为返回类型,它应该是JSON?

1 个答案:

答案 0 :(得分:0)

正如lukasgeiter所说,通常将json存储在db中并不是一个好主意。按该字段过滤可能会很困难。 如果您决定这样做,并且需要获取解码数据,则可以在模型中使用访问器。我不知道这是不是最好的做法。如果描述作为json保存在db中,则可以执行以下操作: 对于"配置"表格你可能有一个"配置" model(Laravel官方网站建议将表格命名为复数,其中的模型是单数,如:table - > configuration和model configuration)。在该文件中,您可以添加:

public function getDescriptionAttribute($value)
{
    return json_decode($value, true);
}

现在,description字段作为数组返回。 您可以在此处查看有关访问者和变更者的更多信息:http://laravel.com/docs/4.2/eloquent#accessors-and-mutators