【问题标题】:Need to rename all Json keys of json file in php需要在php中重命名json文件的所有Json键
【发布时间】:2020-04-20 11:46:23
【问题描述】:

我需要重命名php中json文件的所有Key。

Json 文件:construction.php

{
  "result": {
    "UK": [
      {
        "name": "Leo Philips",
        "age": "28",
        "category": "Senior",
        "place": "London",
        "experience_yrs": "4"
      },
      {
        "name": "Mc Roy",
        "age": "25",
        "category": "Junior",
        "place": "London",
        "experience_yrs": "1"
      }
    ],
    "Europe": [
      {
        "name": "Reo Thomas",
        "age": "31",
        "category": "Senior",
        "place": "Paris",
        "experience_yrs": "6"
      }
    ]
  }
}

我想重命名所有键

“名称”为 NA, AG的“年龄”, “类别”到 CA, “地方”到 PL, 给安永的“experience_yrs”

需要在 fullconstruction.php 中进行以下输出

{
  "result": {
    "UK": [
      {
        "NM": "Leo Philips",
        "AG": "28",
        "CA": "Senior",
        "PL": "London",
        "EY": "4"
      },
      {
        "NM": "Mc Roy",
        "AG": "25",
        "CA": "Junior",
        "PL": "London",
        "EY": "1"
      }
    ],
    "Europe": [
      {
        "NM": "Reo Thomas",
        "AG": "31",
        "CA": "Senior",
        "PL": "Paris",
        "EY": "6"
      }
    ]
  }
} 

这是我在 fullconstruction.php 中使用的代码

<?php
header('Content-Type: application/json');

$parsed = json_decode(file_get_contents("construction.php"), true);
$result = [];
if($parsed['Success']){
    foreach($parsed['result'] as $val){
        $result[] = [
            "NM"=> $val['name'],
            "AG"=> $val['age'],
            "CA"=> $val['category'],
            "PL"=> $val['place'],
            "EY"=> $val['experience_yrs']
         ];
    }     // or what you want.

}

echo json_encode($result);
?>

得到空白 []。

如何实现?

【问题讨论】:

    标签: php json sorting key rename


    【解决方案1】:

    你的代码在我这边不起作用,

    请尝试以下代码,它可以正常工作。

    <?php
    header('Content-Type: application/json');
    
    $parsed = json_decode(file_get_contents("construction.php"), true);
    $result = [];
    if($parsed['result']){
        foreach($parsed['result'] as $key => $val){
           foreach($val as $final_val){
            $result[$key][] = [
                "NM"=> $final_val['name'],
                "AG"=> $final_val['age'],
                "CA"=> $final_val['category'],
                "PL"=> $final_val['place'],
                "EY"=> $final_val['experience_yrs']
             ];
            }
        }     // or what you want.
    
    }
    echo json_encode($result);
    ?>
    

    输出

    {"UK":[{"NM":"Leo Philips","AG":"28","CA":"Senior","PL":"London","EY":"4"},
    {"NM":"Mc Roy","AG":"25","CA":"Junior","PL":"London","EY":"1"}],"Europe":
    [{"NM":"Reo Thomas","AG":"31","CA":"Senior","PL":"Paris","EY":"6"}]}
    

    希望这对你有用。

    【讨论】:

      【解决方案2】:

      你必须循环两次

      使用下面的代码。

      $json = '{
        "result": {
          "UK": [
            {
              "name": "Leo Philips",
              "age": "28",
              "category": "Senior",
              "place": "London",
              "experience_yrs": "4"
            },
            {
              "name": "Mc Roy",
              "age": "25",
              "category": "Junior",
              "place": "London",
              "experience_yrs": "1"
            }
          ],
          "Europe": [
            {
              "name": "Reo Thomas",
              "age": "31",
              "category": "Senior",
              "place": "Paris",
              "experience_yrs": "6"
            }
          ]
        }
      }';
      
      $parsed = json_decode($json, true);
      
      //print_r($parsed);
      
      
      foreach($parsed['result'] as $key => $val){
      
         if($parsed['result'][$key]){
             $subdata = $parsed['result'][$key];
             foreach($subdata as $k1 => $v1){
      
                  $parsed['result'][$key][$k1] = [
                      "NM"=> $v1['name'],
                      "AG"=> $v1['age'],
                      "CA"=> $v1['category'],
                      "PL"=> $v1['place'],
                      "EY"=> $v1['experience_yrs']
                   ];
      
      
             }
         }
      
      }
      
      echo json_encode($parsed);
      

      在这里你会得到

      {
        "result": {
          "UK": [
            {
              "NM": "Leo Philips",
              "AG": "28",
              "CA": "Senior",
              "PL": "London",
              "EY": "4"
            },
            {
              "NM": "Mc Roy",
              "AG": "25",
              "CA": "Junior",
              "PL": "London",
              "EY": "1"
            }
          ],
          "Europe": [
            {
              "NM": "Reo Thomas",
              "AG": "31",
              "CA": "Senior",
              "PL": "Paris",
              "EY": "6"
            }
          ]
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-03-21
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 1970-01-01
        • 1970-01-01
        • 2018-06-15
        相关资源
        最近更新 更多