使用 IPWorks nSoftware 的 Json 反序列化 BodyStyle Wrap 问题
Posted
技术标签:
【中文标题】使用 IPWorks nSoftware 的 Json 反序列化 BodyStyle Wrap 问题【英文标题】:Json Deserialization BodyStyle Wrap issue using IPWorks nSoftware 【发布时间】:2012-05-28 15:02:58 【问题描述】:我正在使用 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 响应作为字符串获取
["role":"name":"Administrator","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 请求中?
【问题讨论】:
【参考方案1】:GitHubRestTests shows some of the different ways 您可以使用ServiceStack's JSON Serializer 反序列化第 3 方 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);
【讨论】:
以上是关于使用 IPWorks nSoftware 的 Json 反序列化 BodyStyle Wrap 问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Indy http 或 ipworks http 模拟登录?