【问题标题】:Renaming JSON subkeys using PHP使用 PHP 重命名 JSON 子键
【发布时间】:2021-12-31 18:59:00
【问题描述】:

我正在尝试帮助现有项目中的 JSON 结构格式,目标是重命名一些子键而不是值。 JSON格式是这样的

{
  "table-name": "Kiwi",
  "created-on": "November 20, 2021",
  "token": "lsUVozOB2TxhvMv",
  "icons": "default",
  "links": "default",
  "extra": "default",
  "mode": "Private",
  "collaborators": [],
  "columns": {
    "Name": {
      "type": "text",
      "extra": ""
    },
    "Info": {
      "type": "longtext",
      "extra": ""
    },
    "Status": {
      "type": "droplist",
      "extra": {
        "fr": "Pending",
        "sc": "On-going",
        "th": "Completed",
        "fo": "Cancelled"
      }
    }
  },
  "data": [{
      "Name": "Team Reports",
      "Info": "Submitting marketing materials reports",
      "Status": "Completed"
    },
    {
      "Name": "Fabia HR",
      "Info": "Brian asking for a report",
      "Status": "Pending"
    },
    {
      "Name": "Fabia",
      "Info": "Meeting with CEO @cafe 9:00",
      "Status": "Cancelled"
    }
  ]
}

我们正在研究 columns 以将 Name 重命名为 Task 并仍然保留另一个。使用数组推送和切片键后,我得到0 作为键和“任务作为子键,如

"0":{
  "Task":{
    "type":"text",
    "extra":""
  },

代码如下所示。请在业余时间分享您的解决方案,提前谢谢您,非常感谢您的关注。这里总菜鸟???? PHP:

$file = file.json;  
$jsn = file_get_contents($file);
$data = json_decode($jsn, true);
 
//get name data array 
$sub_data = $data['columns']['Name'];

$new_rename = array(
    "Task" => $sub_data;
);

array_push($data['columns'],$new_rename);

//now delete old "Name";
array_slice($data['columns'],'Name')

//save stuff
$jsn = json_encode($data);
file_put_contents($file,$jsn);

【问题讨论】:

  • 如果您将 JSON 解析为 PHP 数据结构作为您的第一步,那么您的问题与“JSON 数据”无关,而只是在某个位置重命名一个或多个属性PHP 对象。而是询问这个问题(当然,在搜索如何做到这一点之后)。

标签: php json


【解决方案1】:

鉴于您使用的是 JSON 对象和 PHP 关联数组(而不是数字索引),您真正需要做的就是设置新属性并取消设置旧属性

$data["columns"]["Task"] = $data["columns"]["Name"];
unset($data["columns"]["Name"]);

演示~https://3v4l.org/7pBpZ

【讨论】:

  • 非常感谢。非常感激。快速跟进有没有机会将它放在相同的位置?
  • 为什么?命名对象属性的位置一般是任意的
  • 这不是任意的,因为它连接在 JSON 上的 $data['data'] 上。表示$data['columns'] 上的位置为单元格,$data['data'] 为行,它是一个表格项目,无论如何确实帮了很多忙,我只是想弄清楚重新定位它。非常喜欢!
  • 如果顺序很重要,应该在数组中
  • 是的,这是考虑的最后一个选项.. 但是你认为array_replace 会在添加$data['Task'] 然后替换$data['Name'] 之后保持位置吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 2012-09-16
  • 2022-12-02
  • 2018-09-21
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多