【问题标题】:how do I get nested pojo result from php mysql如何从 php mysql 获取嵌套的 pojo 结果
【发布时间】:2020-07-23 01:04:54
【问题描述】:

如何获得像这样的嵌套 pojo 结果,

object
------object
------object
------------object
------array

这是我从某个我忘记的地方得到的,但它没有生成此结果的代码。

{
  "success": true,
  
  "counter": {
    "pending": 100,
    "rejected": 200,
    "completed": 300,
    "expired": 400,
    "total": 3200
  },
  "pie_statistics": {
    "assigned": 120,
    "opened": 212,
    "in-progress": 100,
    "completed": 320,
    "done": 433,
    "rejected": 111,
    "expired": 332
  },
  
  "bar_months":[
  "jan",
  "feb",
  "mar"
],
  
  "bar_pending":[
    100,
    200,
    300
  ],
  
   "bar_rejected":[
    140,
    220,
    340
  ],
  
  
   "bar_completed":[
    170,
    290,
    310
  ]
  
}

我的代码是这样的

<?php 

require "connection.php";

$query =    "SELECT a.kondisi, k.area, COUNT(k.area) AS carea, COUNT(k.nrp) AS cnrp
            FROM tb_absens AS a
            INNER JOIN tb_karyawans AS k 
            ON a.nrp = k.nrp
            WHERE a.kondisi = 'Sehat' 
            GROUP BY k.area";

$data = mysqli_query($conn, $query);
$json_array = array();

while($row = mysqli_fetch_array($data)){
    array_push($json_array, array(
        "success"   =>  true,
        "cnrp"      =>  $row["cnrp"],
        "area"      =>  $row["area"],
        "kondisi"   =>  $row["kondisi"],
    ));
}

echo json_encode($json_array);

我的结果是这样的

[
{
    "success": true,
    "cnrp": "1",
    "area": "Administrator",
    "kondisi": "Sehat"
},
{
    "success": true,
    "cnrp": "2",
    "area": "AMK CPBP",
    "kondisi": "Sehat"
},..
]

是的,我知道这是个老问题,有很多类似的问题。但我一点头绪都没有。我很感激任何帮助。谢谢。

【问题讨论】:

    标签: php mysql json pojo


    【解决方案1】:

    如果你想把不同的json类型变成一个json,你可以先拆分查询,然后执行每个查询。得到这样的嵌套对象结果

    "counter": {
        "pending": 100,
        "rejected": 200,
        "completed": 300,
        "expired": 400,
        "total": 3200
      },
    

    尝试执行

    while($row = mysqli_fetch_assoc($data)){
    
        $json_arr['counter'][$row['a']] = $row['b'];
           
    }
    

    对于嵌套数组

    "bar_months":[
      "jan",
      "feb",
      "mar"
    ]
    

    使用这个

     while($row = mysqli_fetch_assoc($data)){
            $json_arr2['bar_months'][] = $row_area['months'];
     }
    

    并将其合并为单个 json,您可以使用

    echo json_encode(array_merge($json_arr, $json_arr2));
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      • 2014-10-20
      • 2011-02-08
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多