Php MySQL到JSON响应中的JSON字符串
我有一个JSON格式的字符串存储在mysql数据库的一列(meta_data)中,存储在表中,它看起来像这样,例如:Php MySQL到JSON响应中的JSON字符串,php,json,response,lumen,Php,Json,Response,Lumen,我有一个JSON格式的字符串存储在mysql数据库的一列(meta_data)中,存储在表中,它看起来像这样,例如: {"Format":"JPEG","Geometry":"3216x2136","size":{"width":3216,"height":2136}} 现在,如果我使用以下方法: $meta_data = DB::query->get(); return $meta_data; 我得到: [ { "meta_data": "{\"Format\
{"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
}
}
}
]
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;
另一个选项是为表创建一个模型,然后将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;
是否要将josn更改为数组?或者,请问你的问题是什么?