C# 正在分析从web方法返回的字符串
我第一次开发了一款WindowsPhone8C应用程序 我正在调用我在aspx代码隐藏类中定义的web方法 如何解析返回的对象 这是我的返回对象:C# 正在分析从web方法返回的字符串,c#,json,webmethod,C#,Json,Webmethod,我第一次开发了一款WindowsPhone8C应用程序 我正在调用我在aspx代码隐藏类中定义的web方法 如何解析返回的对象 这是我的返回对象: public class ResponseObject { public bool Success; } 这是我的测试web方法: [WebMethod] public static ResponseObject Test(string username, string password) { ResponseObject resp
public class ResponseObject
{
public bool Success;
}
这是我的测试web方法:
[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是否提供了一种更干净的方法呢?使用
对于将来的用例,您可以定义自己的扩展方法
public static class SOExtensions
{
public static async Task<T> ReadAsJsonAsync<T>(this HttpContent content)
{
var json = await content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(json);
}
}
公共静态类SOExtensions
{
公共静态异步任务ReadAsJsonAsync(此HttpContent内容)
{
var json=await content.ReadAsStringAsync();
返回JsonConvert.DeserializeObject(json);
}
}
可能重复@tnw谢谢。我应该仔细看看。我将保留几分钟,以确保您阅读此感谢,并删除问题无需担心,有时只是知道要搜索的正确内容,“反序列化”是这里的关键:)如果您在客户端上也有ResponseObject
,您可以使用DataContractSerializer
或JSON.Net.Hmm将JSON反序列化为实例。是的,可能我不正确,或者它不适用于Windows Phone项目。您可能需要直接使用SvcUtil.exe。您好,谢谢。这是新的。我现在就开始。谢谢,我得到了这个错误:System.Net.Http.HttpContent不包含ReadAsJsonAsync的定义,并且没有使用System.Net.Http.Formatting添加的扩展方法“ReadAsJsonAsync”;但还是一样error@AndrewSimpson我在我的电脑上测试过。似乎WP 8不支持这种方法。我将用Json更新我的答案。Net@AndrewSimpson更新…(我发现了您的错误。这是我自己的扩展方法:)抱歉)。
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);
}
}