C# 正在分析从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

我第一次开发了一款WindowsPhone8C应用程序

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

如何解析返回的对象

这是我的返回对象:

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

}