解析从web方法返回的字符串

时间:2014-11-18 17:22:15

标签: c# json webmethod

我是第一次开发Windows Phone 8 C#应用程序。

我正在调用我在aspx代码隐藏类中定义的web方法。

如何解析返回的对象?

这是我的回归对象:

public class ResponseObject
{
    public bool Success;
}

这是我的测试网络方法:

[WebMethod]
public static ResponseObject Test(string username, string password)
{
    ResponseObject responseObject = new ResponseObject();

    responseObject.Success= true;

    return responseObject;
}

这是我的主叫客户代码:

    private async void LogIn()
    {
        using (var client = new HttpClient())
        {
            var resp = await client.PostAsJsonAsync("http://my ip/UserManagement/Login.aspx/Test",
                                                     new { username = "", password = "" });
            var str = await resp.Content.ReadAsStringAsync();
        }
    }

这就是str的价值:

{"d":{"__type":"LogIn+ResponseObject","Success":true}}

我想我可以自己解析字符串,但是JSON是否提供了一种更干净的方法呢?

1 个答案:

答案 0 :(得分:2)

使用Json.Net

var str = await resp.Content.ReadAsStringAsync();
var jsonObj = JsonConvert.DeserializeObject<Response>(str);

public class D
{
    public string __type { get; set; }
    public bool Success { get; set; }
}

public class Response
{
    public D d { get; set; }
}

对于将来的用例,您可以定义自己的扩展方法

public static class SOExtensions
{
    public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content)
    {
        var json = await content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<T>(json);
    }

}