如何使用webrequest使用Json数组绘制折线图

时间:2016-01-08 06:33:32

标签: c# php mysql json

首先,我是C#和Json的新手。

我想在C#GUI中绘制mysql表数据的图形。我创建了一个PHP文件来从mysql数据库表中选择数据,并使用echo json_encode(array("result"=>$result))

在json数组中回显所选内容

这是我的PHP:

<?php
define('HOST','*********************');
define('USER','*********************');
define('PASS','*********************');
define('DB','***********************');

if($_SERVER['REQUEST_METHOD']=='GET'){

 $start = $_GET['start'];
 $ending  = $_GET['ending'];
}

$con = mysqli_connect(HOST,USER,PASS,DB);


$sql = "SELECT * FROM table WHERE date_time BETWEEN '$start' and '$ending'" ;
$res = mysqli_query($con,$sql);

$result = array();
while($row = mysqli_fetch_array($res)){
array_push($result,array('id'=>$row[0],'p_pairs'=>$row[1],'temp1'=>$row[2]  ,'temp2'=>$row[3],'temp3'=>$row[4],'temp4'=>$row[5],'temp5'=>$row[6],'avg_current'=>$row[7],'avg_voltage'=>$row[8],'kw'=>$row[9],'kwh'=>$row[10]));
}

echo json_encode(array($result));

mysqli_close($con);

?>

使用链接,我可以在日期时间间隙之间清楚地看到json数组。我想要的是绘制温度值(temp1,temp2,..),p-pair值和其他的图形与date_time线图来读取历史数据。

我访问PHP页面时得到的是:

[[{"id":"1","p_pairs":"0000-00-00 00:00:00","temp1":"2","temp2":"100","temp3":"100","temp4":"100","temp5":"100","avg_current":"100","avg_voltage":"300","kw":"300","kwh":"300"},{"id":"2","p_pairs":"0000-00-00 00:00:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"3","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"},{"id":"4","p_pairs":"2016-01-07 21:10:00","temp1":"45","temp2":"105","temp3":"230","temp4":"100","temp5":"2500","avg_current":"570","avg_voltage":"100","kw":"250","kwh":"1000"}]]

注意:此处将某个日期时间设置为默认值。我只想展示这个数组。正确的图形将非常适合绘制图形。

我可以使用来自C#的Web请求将这些数组放在一个字符串中。使用下面的代码:

        System.Net.WebClient wc = new System.Net.WebClient();
        byte[] raw = wc.DownloadData("url to php");

        string webData = System.Text.Encoding.UTF8.GetString(raw);

这将是一个很大的帮助如果有人可以帮我在线图中将其绘制为date_time Vs temp1,temp2或p_pairs,就像在C#GUI中那样......

这对我来说将是一个很大的帮助。 提前感谢你。

1 个答案:

答案 0 :(得分:1)

首先要上课。您可以从Json

动态创建一个类

如果您乐意依赖System.Web.Helpers程序集,则可以使用Json类:

dynamic data = Json.Decode(json);

它包含在MVC框架中,作为.NET 4框架的附加下载。或者使用NewtonSoft。

接下来获取图表组件:https://msdn.microsoft.com/en-us/library/dd489237.aspx并将数据绑定到图表