Php MySQL到JSON响应中的JSON字符串

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\

我有一个JSON格式的字符串存储在mysql数据库的一列(meta_data)中,存储在表中,它看起来像这样,例如:

 {"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更改为数组?或者,请问你的问题是什么?