网站首页 > 技术文章 正文
有没有一种方式可以将 dynamic 对象转成 可过滤的 IEnumerable 类型对象?比如下面的代码:
dynamic data = JsonConvert.DeserializeObject(response.Content);
然后用Linq去访问
var a = data.Where(p => p.verified == true)
回答区
- Jon Skeet:
只要 data 是某一种 IEnumerable 类型,就可以像下面这样用。
var a = ((IEnumerable) data).Cast<dynamic>().Where(p => p.verified);
这里用 Cast<dynamic>() 的目的就是将 data 转成 IEnumerable<dynamic>,好处在于 lambda 表达式 中的参数也是 动态类型。
- user3407039:
如果可以的话,理想的方式是反序列化时指定好类型,这样就可以避免后期再 Cast,比如下面的代码:
dynamic data = JsonConvert.DeserializeObject(response.Content);
可以改造成
var data = JsonConvert.DeserializeObject<IEnumerable<dynamic>>(response.Content);
- Varun Nair:
这里我提供一些思路可能对你有帮助,用 jsonString 作为 response.Content ,必要的话再在 response 中做迭代过滤。
下面的代码通过 JValue.Parse 来返回 JToken,这里的 JToken 就是 IEnumerable.
string jsonString = "[{\"Question\":{\"QuestionId\":49,\"QuestionText\":\"Whats your name?\",\"Answer\":\"xyz\"}},{\"Question\":{\"QuestionId\":51,\"QuestionText\":\"Are you smart?\",\"Answer\":\"Yes\"}}]";
dynamic myObject = JValue.Parse(jsonString);
foreach (dynamic questions in myObject)
{
Console.WriteLine(questions.Question.QuestionId + "." + questions.Question.QuestionText.ToString());
Console.WriteLine("Ans. " +questions.Question.Answer);
Console.WriteLine();
}
Console.Read();
点评区
其实我觉得既然都用了 JsonConvert ,直接用它内置的 JObject,JToken 来动态解析 json 即可,就如 Varun Nair 所述,简单粗暴。
猜你喜欢
- 2024-09-18 Python的GitHub核心资源库token意外曝光
- 2024-09-18 了解 JWT,JSON Web Token(JWT)是一个非常轻巧的规范
- 2024-09-18 电脑控制手机 易语言实现颜色识别功能
- 2024-09-18 Postman 的高效使用技巧,你知道吗?
- 2024-09-18 PlusToken转移2,631万个EOS,原账号仅剩余了350个EOS
- 2024-09-18 freeswitch修改mod_sofia模块并上报自定义头域
- 2024-09-18 鉴权必须了解的 5 个兄弟:cookie、session、token、jwt、单点登录
- 2024-09-18 SpringSecurity和JWT实现认证和授权
- 2024-09-18 电脑自动安装卸载手机软件-快来Get最简单便捷的方法
- 2024-09-18 使用 Express 和 Node.js 进行电话身份验证
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)