2

我正在使用IPWorks nsoftware创建服务。在其中,调用我正在使用的服务

        Rest rest = new Rest();
        rest.Accept = "application/json";
        rest.ContentType = "application/json";
        rest.User = "UserName";
        rest.Password = "Password";
        rest.Get(@"http://Foo.com/roles.json");
        string result = rest.TransferredData;
        var listRoles = JsonSerializer.DeserializeFromString<List<role>>(result);

我将 Json 响应作为字符串获取

[{"角色":{"名称":"管理员","created_at":"2012-02-11T09:53:54-02:00","updated_at":"2012-04-29T23:43:47- 04:00","id":1"}},{"role":{"name":"NormalUser","created_at":"2013-02-11T08:53:54-02:00","updated_at ":"2013-04-29T23:43:47-03:00","id":2"}}]

这里的 json 字符串包含我的域对象“角色”,它被附加到我的响应中(即消息的正文样式被包装)。我正在使用ServiceStack.Text的 Deserializer 将响应字符串转换为我的对象。但是既然是包裹的,那么反序列化就不正确了。

这里有什么我想念的吗?是否有任何“BodyStyle”属性可以添加到 Rest 请求中?

4

1 回答 1

2

GitHubRestTests 展示了您可以使用ServiceStack 的 JSON Serializer反序列化 3rd 方 json API 的一些不同方法

如果您想将其反序列化为类型化的 POCO,那么根据您的 JSON 有效负载判断,类型化的 POCO 应该类似于:

public class RolePermissionWrapper 
{
    public Role Role { get; set; }
    public Permission Permission { get; set; }
}

public class Role 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public DateTime? Created_At { get; set; } 
    public DateTime? Updated_At { get; set; } 
} 

var listRoles = JsonSerializer.DeserializeFromString<List<RolePermissionWrapper>>(result);
于 2012-05-29T04:00:12.773 回答