在c#中检索多个JSON对象
本文关键字:JSON 对象 检索 | 更新日期: 2023-09-27 18:01:49
我有一个简单的按钮,运行一个脚本从40个表中提取数据,在php中这些都是JSON编码的。
$stmt = $pdo->prepare("SELECT* FROM form");
$stmt->execute();
$results=$stmt->fetchAll(PDO::FETCH_ASSOC);
$form=$results;
$stmt = $pdo->prepare("SELECT * FROM applicant");
$stmt->execute();
$results=$stmt->fetchAll(PDO::FETCH_ASSOC);
$applicant=$results;
print json_encode(array($form,$applicant));
我没有使用select *,这只是为了方便阅读。这显示为一个数组,然而,当我拉数组到c#这是作为一个字符串完成,我如何通过数组从php到c#?
WebClient wc = new WebClient();
var json = wc.DownloadString("http://localhost/returnData.php");
List<Applicant> app = JsonConvert.DeserializeObject<List<Applicant>>(json);
List <form> form = JsonConvert.DeserializeObject<List<form>>(json);
dataGrid.ItemsSource = form;
dataGrid2.ItemsSource = app;
想法一这可能是不好的做法,但我可以为每个表运行一个脚本,然后单独返回每个JSON对象,我知道这将工作,但这将是性能沉重,将不得不创建多个脚本。
[{"id":"1","name_id":"0","first":"advert","last":"","address":"","postcode":"2","date_created":"2016-08-09 15:50:12"},{"id":"2","name_id":"0","first":"advert","last":"","address":"","postcode":"2","date_created":"2016-08-09 16:25:04"}]
想法二我可以创建一个脚本,但返回所有与分隔符。例如print $form."^".$app;
,然后将它们分割成c#中的数组?
想法三理想情况下,我想将json数组传递给c#。
wc.DownloadString("http://localhost/returnData.php")
代码行将尝试下载整个资源returnData.php
,这不仅包括打印的JSON数组,而且还包括页面HTML标记,因此您对JsonConvert.DeserializeObject<List<Applicant>>(json)
的反序列化在逻辑上应该失败。
你应该尝试直接从你的c#代码(或)暴露这些方法作为Web API方法(我的意思是REST服务),并从你的c#代码调用它们来获得所需的数据。
Try this:
请创建一个这样的类//Jsonget.cs
public static string jsonconvert(string url)
{
string currentsite = HttpContext.Current.Request.Url.Authority;
WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
wc.Encoding = UTF8Encoding.UTF8;
string test = "http://" + currentsite + url;
var data = wc.DownloadString(test);
string jsonresult = "{'"results'":" + data.ToString() + "}";
return jsonresult;
}
string jsonurl = "";
string getjsonresult = "";
getjsonresult = Jsonget.jsonconvert("http://localhost/returnData.php");
Newtonsoft.Json.Linq.JObject Result= Newtonsoft.Json.Linq.JObject.Parse(getjsonresult);
foreach (var get_result in Result["results"])
{
string id= (string)get_result ["id"];
string name_id= (string)get_result ["name_id"];
}