You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何打印JSON对象的键名?含指定JSON示例

嘿,这两个问题都不难,我来给你一步步讲清楚~

问题1:Laravel中是否可以打印JSON对象键值对的键名?

当然可以!在Laravel里处理JSON数据非常灵活,只要先把JSON转换成PHP能识别的数组或对象,就能轻松获取并打印键名了。给你两种常用的实现方式:

  • 转成关联数组后用array_keys()
    先把JSON字符串转成关联数组,再用array_keys()提取所有键名,最后遍历打印:

    // 示例JSON字符串
    $jsonStr = '{"name": "Laravel", "version": 10, "type": "PHP框架"}';
    // 转成关联数组
    $dataArray = json_decode($jsonStr, true);
    // 获取所有键名
    $keyNames = array_keys($dataArray);
    // 遍历打印键名
    foreach ($keyNames as $key) {
        echo $key . '<br>';
    }
    
  • 转成对象后遍历属性
    把JSON转成PHP的StdClass对象,然后通过foreach遍历键值对,直接输出键名:

    $jsonStr = '{"name": "Laravel", "version": 10, "type": "PHP框架"}';
    $dataObj = json_decode($jsonStr);
    // 遍历对象的属性键名和值
    foreach ($dataObj as $key => $value) {
        echo "键名:{$key}<br>";
    }
    

    如果是从Eloquent模型的JSON类型字段读取的数据,Laravel会自动帮你转成数组/对象,直接用上面的方法就行。

问题2:如何从给定JSON数据中显示键名"in"的内容?

首先先把你提供的JSON补全(看起来末尾少了闭合的大括号),假设完整的JSON数据是这样的:

{
  "pricing": {
    "in": {
      "categories": [ "ccTLD", "Geography" ],
      "addons": { "dns": true, "email": true, "idprotect": true },
      "group": "",
      "register": { "1": "704.39" },
      "transfer": { "1": "704.39" },
      "renew": { "1": "704.39" }
    }
  }
}

在Laravel里可以这样获取"in"的内容:

  • 关联数组方式访问
    把JSON转成关联数组后,通过键名层级直接取值:

    // 你的JSON字符串
    $jsonStr = '{"pricing": {"in": {"categories": ["ccTLD", "Geography"], "addons": {"dns": true, "email": true, "idprotect": true}, "group": "", "register": {"1": "704.39"}, "transfer": {"1": "704.39"}, "renew": {"1": "704.39"}}}}';
    $dataArray = json_decode($jsonStr, true);
    // 获取"in"的内容
    $inContent = $dataArray['pricing']['in'];
    // 调试输出(Laravel常用dd()函数,会显示结构化数据)
    dd($inContent);
    // 或者转成格式化的JSON字符串输出
    echo json_encode($inContent, JSON_PRETTY_PRINT);
    
  • 对象方式访问
    转成StdClass对象后,通过对象属性的方式取值:

    $dataObj = json_decode($jsonStr);
    $inContent = $dataObj->pricing->in;
    dd($inContent);
    

    如果这个JSON是来自前端的请求参数,Laravel的request()对象已经帮你解析好了,直接这样拿就行:

    $inContent = request()->pricing['in'];
    // 或者对象方式
    $inContent = request()->pricing->in;
    

内容的提问来源于stack exchange,提问作者sharmila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:03:59