繁体   English   中英

如何从JSON获取数组?

[英]How to get array from JSON?

我正在尝试从具有2列(温度和值)的MySQL表中获取数据。 我想将这些值存储到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;
?>

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

{"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"}

那是预期的。

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>

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

custom.js:

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

这也提供了类似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]的数组。 我需要这个数组来转发图表和绘图数据(我不是在问绘图,只是为了获取数组)。

如何实现呢?

您的输出

{"1":"-1","2":"0","3":"0",...,"31":"5"}

是当前形式的JavaScript对象。 您可以通过以下方式简单地访问它:

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

alert(data["31"]);
// 5

请注意,对象文字的常见语法是点表示法: 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

更新资料

还可以直接从PHP获得此数据作为适当的数组。 您可以将输出包装在另一个数组中,如下所示:

// Wrap the array in another array indexed as niz
$obj = json_encode(array("niz" => $niz));
echo $obj;

我的项目中有类似您的代码的内容。 就像这样:

$final = array('msg' => $msg, 'result' => $result);
echo json_encode($final);

如您所见,我制作了一个带有2个键和值的数组。 这段代码对我来说很好用。 尝试遵循上述方法创建数组并再次进行测试。 希望您能解决您的问题。

如果我理解正确,您想将PHP的JSON输出转换为实际数组,对吗?

您可以简单地使用eval()

myArray = eval(data);

警告 :Eval被认为是不安全的,您只应将其用于可信任的来源。 确保除了评估PHP脚本外,别无其他方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM