读取收到的 json 数据时出错。我正在使用 C# 开发 UWP,它从 json 读取数据
Am getting an error while reading json data received. Am developing a UWP using C# which reads data from json
public class BMIRSProxy
{
static string json_url = string.Format("http://localhost:8081/bmirs_2015/php_scripts/get_staff_members.php");
public async static Task<StaffMember> GetStaffMember()
{
var http = new HttpClient();
var response = await http.GetAsync(json_url);
var result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof(StaffMember));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (StaffMember)serializer.ReadObject(ms);
return data;
}
}
[DataContract]
public class StaffMember
{
[DataMember]
public string first_name { get; set; }
[DataMember]
public string last_name { get; set; }
[DataMember]
public string title { get; set; }
[DataMember]
public string profile { get; set; }
[DataMember]
public string image_uri { get; set; }
}
以上是我创建的class。但是当我可以在创建的按钮中使用方法 GetStaffMember
时,没有数据输出。当我调试时,我从 MemomryStream
实例 ms
得到两个错误,如下所示:
- 列表项
ReadTimeout = 'ms.ReadTimeout' threw an exception of type
'System.InvalidOperationException'
- 列表项
WriteTimeout = 'ms.WriteTimeout' threw an exception of type
'System.InvalidOperationException'
下面是我用来调用方法的代码GetStaffMember
private async void Button_Click(object sender, RoutedEventArgs e)
{
StaffMember myStaffMember = await BMIRSProxy.GetStaffMember();
}
非常感谢您的帮助,因为我现在卡住了
看起来您的 JSON 字符串是一个包含 1 个元素的数组。
因此,让我们反序列化为数组,select 是数据绑定的唯一元素
public async static Task<StaffMember> GetStaffMemberAsync()
{
var http = new HttpClient();
var response = await http.GetAsync(json_url);
var result = await response.Content.ReadAsStringAsync();
var data = (JsonConvert.DeserializeObject<List<StaffMember>>(result))[0];
return data;
}
public class BMIRSProxy
{
static string json_url = string.Format("http://localhost:8081/bmirs_2015/php_scripts/get_staff_members.php");
public async static Task<StaffMember> GetStaffMember()
{
var http = new HttpClient();
var response = await http.GetAsync(json_url);
var result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof(StaffMember));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (StaffMember)serializer.ReadObject(ms);
return data;
}
}
[DataContract]
public class StaffMember
{
[DataMember]
public string first_name { get; set; }
[DataMember]
public string last_name { get; set; }
[DataMember]
public string title { get; set; }
[DataMember]
public string profile { get; set; }
[DataMember]
public string image_uri { get; set; }
}
以上是我创建的class。但是当我可以在创建的按钮中使用方法 GetStaffMember
时,没有数据输出。当我调试时,我从 MemomryStream
实例 ms
得到两个错误,如下所示:
- 列表项
ReadTimeout = 'ms.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
- 列表项
WriteTimeout = 'ms.WriteTimeout' threw an exception of type 'System.InvalidOperationException'
下面是我用来调用方法的代码GetStaffMember
private async void Button_Click(object sender, RoutedEventArgs e)
{
StaffMember myStaffMember = await BMIRSProxy.GetStaffMember();
}
非常感谢您的帮助,因为我现在卡住了
看起来您的 JSON 字符串是一个包含 1 个元素的数组。 因此,让我们反序列化为数组,select 是数据绑定的唯一元素
public async static Task<StaffMember> GetStaffMemberAsync()
{
var http = new HttpClient();
var response = await http.GetAsync(json_url);
var result = await response.Content.ReadAsStringAsync();
var data = (JsonConvert.DeserializeObject<List<StaffMember>>(result))[0];
return data;
}