我有一个存储在mysql数据库中的列(meta_data)中的JSON格式字符串,存储在表格中,例如:
{"Format":"JPEG","Geometry":"3216x2136","size":{"width":3216,"height":2136}}
现在,如果我使用以下内容:
$meta_data = DB::query->get();
return $meta_data;
我明白了:
[
{
"meta_data": "{\"Format\":\"JPEG\",\"Geometry\":\"3216x2136\",\"size\":{\"width\":3216,\"height\":2136}
}
]
如果我使用的话,我也会得到相同的结果:
$meta_data = json_decode(DB::query->get());
return $meta_data;
同样,使用response() - > json($ meta_data);将其作为字符串返回。
在我看来,它需要下一步,但我还没有能够接近我所追求的一切,这是理想的:
[
{
"meta_data":
{
"Format":"JPEG",
"Geometry":"3216x2136",
"size":
{
"width":3216,
"height":2136
}
}
}
]
答案 0 :(得分:1)
DB::query->get()
将返回一个stdClass对象数组(假设query
只是查询条件的简写)。您需要遍历数组并手动将每个条目的meta_data
字段转换为json对象。
$records = DB::query->get();
foreach ($records as $record) {
$record->meta_data = json_decode($record->meta_data);
}
return $records;
另一种选择是为表创建一个Model,然后将meta_data
字段添加到$casts
属性以自动将其转换为json。
型号:
class Attachment extends Model
{
protected $casts = [
'meta_data' => 'json',
];
}
控制器:
// assume "query" is shorthand for your query conditions
$records = Attachment::query->get();
return $records;