【问题标题】:Laravel: Access key value from json type stringLaravel:从json类型字符串访问键值
【发布时间】:2021-09-14 10:49:14
【问题描述】:

我从 Laravel 的请求中获得了这些数据

{"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"longitude":153.0696076}

但我无法单独访问密钥,即值、纬度、经度。我试过 json_decode 但这不起作用。

这是我的控制器方法

public function saveLocation(Request $request){
    $location = $request->all();
    Location::create(['address'=>$location->value,'long'=>$location->longitude,'lat'=>$location->latitude]);
}

基本上我想将位置数据从请求保存到数据库。在 $location 对象中,我得到了粘贴在顶部的数据

【问题讨论】:

  • 显示控制器方法和您尝试过的方法,以便有人可以帮助您解决问题
  • 嗨,约翰,我已经更新了问题
  • 如果你 dd($location ); 你会得到什么我的意思是 dd($request->all());
  • 这行得通吗? Location::create(['address'=>$request->value,'long'=>$request->longitude,'lat'=>$request->latitude]);
  • 如果这也是数据库中的所有数据,您可以执行 Location::create($request->all);否则只需尝试 dd($request->all);

标签: php arrays json laravel


【解决方案1】:

我不知道简单的 json_decode 有什么问题,但我通过在 foreach 循环中使用 json_decode 然后访问密钥对值解决了我的问题

foreach (json_decode($location) as $key => $value) {
    if($key=="value")
        $obj['address'] = $value;
    else
        $obj[$key] = $value;
}
Location::create($obj);

【讨论】:

    【解决方案2】:

    Json decode 适用于提到的 json。如果 $location 返回提到的 json 那么

    $data='{"value":"QWS Welding Supply Solutions, Taylor Street","latitude":-27.4495148,"longitude":153.0696076}';
    
    dd(json_decode($data)->latitude);
    

    应该是这样的

    public function saveLocation(Request $request){
        $location = json_decode($request->all());
        Location::create(['address'=>$location->value,'long'=>$location->longitude,'lat'=>$location->latitude]);
    }
    

    【讨论】:

    • 但是当我尝试解码时得到“不能使用 stdClass 类型的对象作为数组”
    • @AfzalAli.try 来自我的答案的样本测试。所以你可以验证。你确定 $request->all return json
    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多