首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL到JSON,如何获得正确的格式?

问MySQL到JSON,如何获得正确的格式?
EN

Stack Overflow用户
提问于 2016-06-19 16:48:54
回答 1查看 42关注 0票数 0

因此,我使用PHP将MySQL输出到JSON,但我很难找到如何输出正确的JSON格式。

这里是PHP脚本:

代码语言:javascript
复制
$sql_query = "SELECT * FROM DiseaseData"; 
$res_sql = mysql_query($sql_query) or die(mysql_error());
$arr = array();


if(mysql_num_rows($res_sql) > 0){   

    ini_set('memory_limit', '-1');
    while($row_sql = mysql_fetch_assoc($res_sql)){

        $arr[] =  $row_sql;

        }
        $json = json_encode($arr);
        $file = '../../files/json/DiseaseData.json';
        file_put_contents($file, $json);

    }  
    ini_set('memory_limit', '-1');

这里是输出的JSON格式:

代码语言:javascript
复制
[{
    "ID": "1",
    "Magnitude": "0.842",
    "County": "Alameda",
    "Disease": "E. coli O157",
    "lat": "37.7652",
    "lng": "-122.242"
}, {
    "ID": "2",
    "Magnitude": "1.520",
    "County": "Alameda",
    "Disease": "HIV",
    "lat": "37.7652",
    "lng": "-122.242"
}]

,这是我想要的JSON格式:

代码语言:javascript
复制
{
    "columns":[{
            "fieldName" : "ID",
            "position" : 1
    },
    {
            "fieldName" : "Magnitude",
            "position" : 2
    },
    {
            "fieldName" : "County",
            "position" : 3
    },
    {
            "fieldName" : "Disease",
            "position" : 4
    },
    {
            "fieldName" : "lat",
            "position" : 5
    },
    {
            "fieldName" : "lng",
            "position" : 6
    },]
    "data": [ 
        [ 1, 0.842, "Alameda", "E. coli O157", 37.7652, -122.242],
        [ 2, 1.520, "Alameda", "HIV", 37.7652, -122.242]
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-19 17:28:51

解决办法如下:

  • 创建两个数组,$columns和$data
  • 在$columns数组中,存储位置和相关的字段名。
  • 在$data数组中,使用while循环插入所有数据行。
  • 最后,在$result数组中插入两个数组,然后在其上应用json_enocde()。

下面是代码:

代码语言:javascript
复制
// your code

if(mysql_num_rows($res_sql) > 0){   
    $columns = $data = array();
    $max_columns = mysql_num_fields($res_sql);

    for($i=0; $i < $max_columns; $i++){
         $columns[] = array('fieldName' => mysql_field_name($res_sql, $i), 'position' => $i+1);
    }

    while($row_sql = mysql_fetch_assoc($res_sql)){
        $data[] =  array_values($row_sql);
    }
    $result = array('columns' => $columns, 'data' => $data);
    $json = json_encode($result);

    // your code  
}   

注意:不使用mysql_*函数,它们在PHP5.5中被取消,在PHP7.0中被完全删除。使用mysqli或pdo代替。 functions。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37909584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档