在 C# Xamarin Forms 中获取 JSON
Fetching JSON in C# Xamarin Forms
我正在尝试在 Xamarin Forms (C#) 中使用我的 JSON API。 API 可以 return:
失败时:{"status":"failed"}
一切正常时:{"status":"success","time":"03.06.2016 13:15","data":["Thats a cool text","And thats another text"]}
我目前正在这样做:
var client = new HttpClient ();
var url = "http://domain/plan/web/get/" + userclass;
var response = await client.GetAsync (url);
var data = response.Content.ReadAsStringAsync ().Result;
但是现在,我需要:
- 将 JSON 数据提取到数组或其他内容中
- 当 API return 失败时显示警报(使用 DisplayAlert())
- 当API returns成功时,获取时间,并将数据(API结果末尾的两个或多个字符串)设置为标签或列表视图。
我该怎么做?
您需要做的第一步是创建一个可以处理您的 JSON 数据的 class。在这种情况下,我会这样做:
public class APIResponse
{
public string status { get; set; }
public string time { get; set; }
public List<string> data { get; set; }
}
然后你需要创建你需要创建一个方法来发出 GET 请求。这可以通过这样做来完成:
public async Task <APIResponse> GetDataFromAPI(string query){
try
{
var client = new System.Net.Http.HttpClient ();
client.BaseAddress = "http://domain/";
var response = await client.GetAsync("plan/web/get"+query);
response.EnsureSuccessStatusCode();
var responseJSON = await response.Content.ReadAsStringAsync();
var msg = JsonConvert.DeserializeObject<APIResponse>(responseJSON);
return msg;
}
catch (Exception exc)
{
var msg = new APIResponse ();
msg.status = "failed";
return msg;
}
}
然后在您的页面中使用以下方法调用该方法:
APIResponse data = await GetDataFromAPI("yourquery");
if(data.status.Equals("success"){
//Assign object values to label text property
}
else {
DisplayAlert("Error","Something wrong happened", "OK");
}
我正在尝试在 Xamarin Forms (C#) 中使用我的 JSON API。 API 可以 return:
失败时:{"status":"failed"}
一切正常时:{"status":"success","time":"03.06.2016 13:15","data":["Thats a cool text","And thats another text"]}
我目前正在这样做:
var client = new HttpClient ();
var url = "http://domain/plan/web/get/" + userclass;
var response = await client.GetAsync (url);
var data = response.Content.ReadAsStringAsync ().Result;
但是现在,我需要:
- 将 JSON 数据提取到数组或其他内容中
- 当 API return 失败时显示警报(使用 DisplayAlert())
- 当API returns成功时,获取时间,并将数据(API结果末尾的两个或多个字符串)设置为标签或列表视图。
我该怎么做?
您需要做的第一步是创建一个可以处理您的 JSON 数据的 class。在这种情况下,我会这样做:
public class APIResponse
{
public string status { get; set; }
public string time { get; set; }
public List<string> data { get; set; }
}
然后你需要创建你需要创建一个方法来发出 GET 请求。这可以通过这样做来完成:
public async Task <APIResponse> GetDataFromAPI(string query){
try
{
var client = new System.Net.Http.HttpClient ();
client.BaseAddress = "http://domain/";
var response = await client.GetAsync("plan/web/get"+query);
response.EnsureSuccessStatusCode();
var responseJSON = await response.Content.ReadAsStringAsync();
var msg = JsonConvert.DeserializeObject<APIResponse>(responseJSON);
return msg;
}
catch (Exception exc)
{
var msg = new APIResponse ();
msg.status = "failed";
return msg;
}
}
然后在您的页面中使用以下方法调用该方法:
APIResponse data = await GetDataFromAPI("yourquery");
if(data.status.Equals("success"){
//Assign object values to label text property
}
else {
DisplayAlert("Error","Something wrong happened", "OK");
}