我是第一次开发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是否提供了一种更干净的方法呢?
答案 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);
}
}