如何从JSON获取数组?

Ива*_*вац 0 javascript php jquery

我试图从MySQL表中获取有2列,温度和值的数据.我想将这些值存储到JSON,然后传递给客户端脚本.我的PHP代码是:database2json.php:

<?php
    $con = mysql_connect("localhost", "root", "123456");
    if (!$con) {
        die('Could not connect:' . mysql_error());
    }
    mysql_select_db("klima", $con);
    $result = mysql_query("select Dan, Temperatura from TEMPERATURA");
        $niz = array();
    while ($row = mysql_fetch_array($result)) {
        $niz[$row['Dan']] = $row['Temperatura'];
    }
        mysql_close($con);
        $obj = json_encode($niz);
        echo $obj;
?>
Run Code Online (Sandbox Code Playgroud)

当我在服务器上运行此文件时,我得到:

{"1":"-1","2":"0","3":"0","4":"0","5":"4","6":"5","7":"3","8":"2","9":"2","10":"1","11":"-2","12":"-2","13":"0","14":"1","15":"-2","16":"-1","17":"-1","18":"-2","19":"-1","20":"3","21":"-1","22":"0","23":"1","24":"3","25":"1","26":"1","27":"-1","28":"-1","29":"4","30":"5","31":"5"}
Run Code Online (Sandbox Code Playgroud)

这是预期的.

Html没什么特别的.

index.html的:

<html>
    <head>
        <title>jQuery</title>
        <script src="jquery.js" type="text/javascript"></script>
        <script src="custom.js" type="text/javascript"></script>
    </head>
    <body>
        <div id="id1"></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在我从jQuery调用php并显示这些值.

custom.js:

$(document).ready(function(){
    $.post('database2json.php', function(data){
        $('#id1').html(data);
    },
    "json");
});
Run Code Online (Sandbox Code Playgroud)

这也提供了像php一样的输出:

{ "1": " - 1", "2": "0", "3": "0", "4": "0", "5": "4", "6": "5", "7": "3", "8": "2", "9": "2", "10": "1", "11": " - 2", "12": " - 2", "13": "0", "14": "1", "15": " - 2", "16": " - 1", "17": " - 1", "18":" - 2 " "19": " - 1", "20": "3", "21": " - 1", "22": "0", "23": "1", "24":" 3 " "25": "1", "26": "1", "27": " - 1", "28": " - 1", "29": "4", "30":" 5 ", "31": "5"}

现在我不知道如何将其转换为[Dan,Temperatura]的数组.我需要这个数组转发图表和绘图数据(我不是要求绘图,只是为了得到数组).

怎么做到这一点?

Mic*_*ski 5

你的输出

{"1":"-1","2":"0","3":"0",...,"31":"5"}
Run Code Online (Sandbox Code Playgroud)

是当前形式的JavaScript对象.您可以简单地访问它:

alert(data["1"]);
// -1

alert(data["31"]);
// 5
Run Code Online (Sandbox Code Playgroud)

请注意,对象文字的常用语法是点符号: object.propertyname,但这对于像1-31索引这样的数字属性名称不起作用.因此,您可以使用括号中的属性名称data["1"].

如果您真的需要它作为索引数组,您可以将其转换为:

var array = [];
for (key in data) {
  array[key] = data[key];
}
// Now array is an Array with similar structure to the object data
Run Code Online (Sandbox Code Playgroud)

更新

还有另一种可能直接从PHP获取这些数据作为正确的数组.您可以将输出包装在另一个数组中,如下所示:

// Wrap the array in another array indexed as niz
$obj = json_encode(array("niz" => $niz));
echo $obj;
Run Code Online (Sandbox Code Playgroud)