c# - 读取收到的 json 数据时出错。我正在使用 C# 开发一个 UWP,它从 json 读取数据

标签 c# json win-universal-app

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; }
}

上面是我创建的类。但是当我可以在创建的按钮中使用方法 GetStaffMember 时,没有数据输出。当我调试时,我从 MemomryStream 实例 ms 得到了两个错误,如下所示:

  1. 列表项

ReadTimeout = 'ms.ReadTimeout' threw an exception of type 'System.InvalidOperationException'

  1. 列表项

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 个元素的数组。 因此,让我们反序列化为一个数组,并为您的数据绑定(bind)选择唯一的元素

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;
}

关于c# - 读取收到的 json 数据时出错。我正在使用 C# 开发一个 UWP,它从 json 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35533877/

相关文章:

c# - 错误消息与抛出异常 C# ASP.Net

c# - 使用最小配置的 Unity

c# - 如何检测 SqlConnection 的 "blocking period"是否处于事件状态?

jquery - 获取未捕获的语法错误: Unexpected Token ':'

Visual Studio 2012 IDE 中的 JSON 编辑器(突出显示、折叠、验证)

win-universal-app - UWP(通用Windows平台)的学习资源

c# - 为什么我无法通过 C# 应用程序连接到远程 SQL 服务器?

json - 从函数外的 json fetch 访问数据

c# - Windows 10 通用应用程序。我应该为汉堡菜单使用什么控件?

c# - 如何访问 Windows 10 UWP 中的联系人?