如果我尝试使用return response()->json($categorie);
返回JSON-String,我会得到一个空响应。
如果我为return
替换echo
,那么我会得到
HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json {"id":5,"name":"blah","parent":4,"visible":"yes","position":0,"created_at":"2016-06-29 15:23:25","updated_at":"2016-06-29 15:23:25"}
作为浏览器输出。
我正在使用Laravel 5.2。 这是完整的代码:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Categories;
class ApiController extends Controller
{
public static function categorieGetById($id) {
$categorie = Categories::find($id);
echo response()->json($categorie);
// return response()->json($categorie);
}
}
更新:控制器什么都不返回。每个return
产生一个空输出。
为什么呢?
答案 0 :(得分:1)
您应该使用toJson()方法。
$categorie = Categories::find($id)->toJson();
echo $categorie; // your json output
return $categorie; // same json output
toJson方法将集合转换为JSON。
在您当前的代码中,
$categorie = Categories::find($id);
return response()->json($categorie); // your json output with return
注意: - 您必须在此处写下return
。
在上面的代码中,如果你写 echo ,
echo response()->json($categorie);
然后会显示
HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json {"id":5,"name":"blah","parent":4,"visible":"yes","position":0,"created_at":"2016-06-29 15:23:25","updated_at":"2016-06-29 15:23:25"}
答案 1 :(得分:0)
来自http://laravel-tricks.com/tricks/return-json-response的qoute:
在官方文档:http://laravel.com/docs/responses#special-responses中,需要做Response :: json(...)来创建json响应。实际上,如果返回的值是arrayableinterface或jsonableinterface的数组或实例,例如eloquent model,那么你可以返回它,它会成为一个json,神奇地。