【问题标题】:Echo JSON encoded data回显 JSON 编码数据
【发布时间】:2017-04-19 06:10:35
【问题描述】:

我正在使用 Codeigniter RESTful API 根据输入从数据库中获取数据。现在我想改变以不同方式显示我的 json 输出的方式。

代码:

function categoryskills_get()
{
    $category = $this->get('category');
    $skills = $this->Users_model->categoryskills($category);
    if($skills != FALSE)
    {
        $sub_cat = 0;
        foreach($skills['skills'] as $row)
        {
            $data[$skills['cat']][]['sub_category'] = $row['sub_cat'];
            $data[$skills['cat']][]['skills'] = $row['s_name'];
        }
        $this->set_response($data, REST_Controller::HTTP_OK);
    }else{
        $response["error"] = TRUE;
        $response["status"] = '404';
        $response["error_msg"] = "Category not found!";
        $this->set_response($response, REST_Controller::HTTP_NOT_FOUND);
    }
}  

上面的代码是我的 http 请求的控制器。

电流输出

{
"Consultants": [
    {
        "sub_category": "Consultants"
    },
    {
        "skills": "Career Counsellor, Creative Consultant,Digital Consultant"
    },
    {
        "sub_category": "Accounting"
    },
    {
        "skills": "Accountant,Auditor,Tax Specialist"
    }

 ]
}   

预期输出:

{
"Consultants": [
    {
        "sub_category": "Consultants",
        "skills": "Career Counsellor,Creative Consultant,Digital Consultant"
    },
    {
     .....
    }
 ]
}

【问题讨论】:

    标签: json codeigniter api encoding


    【解决方案1】:
    function categoryskills_get()
    {
        $category = $this->get('category');
        $skills = $this->Users_model->categoryskills($category);
        if($skills != FALSE)
        {
            $sub_cat = 0;
            foreach($skills['skills'] as $key=>$row)
            {
                $data[$skills['cat']][$key]['sub_category'] = $row['sub_cat'];
                $data[$skills['cat']][$key]['skills'] = $row['s_name'];
            }
            $this->set_response($data, REST_Controller::HTTP_OK);
        }else{
            $response["error"] = TRUE;
            $response["status"] = '404';
            $response["error_msg"] = "Category not found!";
            $this->set_response($response, REST_Controller::HTTP_NOT_FOUND);
        }
    }  
    

    使用 foreach 作为键、值并将 $key 放入这样的数组中 $data[$skills['cat']][$key]['sub_category'] 你会得到想要的输出

    【讨论】:

      【解决方案2】:

      只需为 sub_cat 和技能制作单独的临时数组

      $category = $this->get('category');
          $skills = $this->Users_model->categoryskills($category);
          $data = array();//create an empty array
          if($skills != FALSE)
          {
              $sub_cat = 0;
              foreach($skills['skills'] as $row)
              {
                  $arr['sub_category'] = $row['sub_cat'];
                  $arr['skills'] = $row['s_name'];//makes an $arr array
      
                  $data[$skills['cat']][] = $arr;  //and after that add it to                        main array
              }
              $this->set_response($data, REST_Controller::HTTP_OK);
          }else{
              $response["error"] = TRUE;
              $response["status"] = '404';
              $response["error_msg"] = "Category not found!";
              $this->set_response($response, REST_Controller::HTTP_NOT_FOUND);
          }
      }  
      

      【讨论】:

        【解决方案3】:
        function categoryskills_get()
        {
            $category = $this->get('category');
            $skills = $this->Users_model->categoryskills($category);
            if($skills != FALSE)
            {
                $sub_cat = 0;
                foreach($skills['skills'] as $row)
                {
                    $data[$skills['cat']][] = array('sub_category'=>$row['sub_cat'],'skills'=>$row['s_name']);
                }
                $this->set_response($data, REST_Controller::HTTP_OK);
            }else{
                $response["error"] = TRUE;
                $response["status"] = '404';
                $response["error_msg"] = "Category not found!";
                $this->set_response($response, REST_Controller::HTTP_NOT_FOUND);
            }
        }  
        

        【讨论】:

          【解决方案4】:

          使用array_push() 方法如下:

          $category = $this->get('category');
              $skills = $this->Users_model->categoryskills($category);
              $data = array();//create an empty array
              if($skills != FALSE)
              {
                  $sub_cat = 0;
                  foreach($skills['skills'] as $row)
                  {
                      $arr['sub_category'] = $row['sub_cat'];
                      $arr['skills'] = $row['s_name'];//makes an $arr array
                      array_push($data[$skills['cat']], $arr);//push array
                  }
                  $this->set_response($data, REST_Controller::HTTP_OK);
              }else{
                  $response["error"] = TRUE;
                  $response["status"] = '404';
                  $response["error_msg"] = "Category not found!";
                  $this->set_response($response, REST_Controller::HTTP_NOT_FOUND);
              }
          }  
          

          【讨论】:

            猜你喜欢
            • 2023-03-21
            • 1970-01-01
            • 2016-04-03
            • 2015-09-04
            • 1970-01-01
            • 1970-01-01
            • 2013-09-09
            • 1970-01-01
            • 2021-12-13
            相关资源
            最近更新 更多