- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
当我可以调用第 3 方 api 并取回单个类的数据时,使用此代码一切反序列化都很好
TheUser me = jsonSerializer.Deserialize(response, typeof(TheUser)) as TheUser
当我尝试反序列化作为数组的 JSON 响应内容时出现问题,例如
{
"data": [
{
"name": "A Jones",
"id": "500015763"
},
{
"name": "B Smith",
"id": "504986213"
},
{
"name": "C Brown",
"id": "509034361"
}
]
}
只有在“数据”成员周围使用自定义包装类并且该成员的类型必须是 List<object>
时,我才能使序列化工作。 .如果它们的类型为 List<TheUser>
我得到 ArgumentException
来自 JsonParser DesializeType
方法。
我最初尝试在没有像这样的包装类型的情况下进行序列化
List<TheUser> freinds = jsonSerializer.Deserialize(response, typeof(List<TheUser>)) as List<TheUser>;
但这只会返回一个空集合。当然,我必须能够将数组反序列化为强类型列表。
最佳答案
在查看 the source 之后,对于 WP7 Hammock 实际上并不使用 Json.Net 进行 JSON 解析。相反,它使用自己的解析器,该解析器不能很好地处理自定义类型。
如果使用 Json.Net可以直接反序列化为包装器对象内的强类型集合。
var response = @"
{
""data"": [
{
""name"": ""A Jones"",
""id"": ""500015763""
},
{
""name"": ""B Smith"",
""id"": ""504986213""
},
{
""name"": ""C Brown"",
""id"": ""509034361""
}
]
}
";
var des = (MyClass)Newtonsoft.Json.JsonConvert.DeserializeObject(response, typeof(MyClass));
return des.data.Count.ToString();
和:
public class MyClass
{
public List<User> data { get; set; }
}
public class User
{
public string name { get; set; }
public string id { get; set; }
}
必须使用数据属性创建额外的对象很烦人,但这是构造 JSON 格式对象的方式的结果。
关于c# - 将 JSON 数组反序列化为强类型 .NET 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979434/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!