QQ登录

只需一步,快速开始

.Net Core 笔记:自定义模型数组(List)到 JSON 的转换

依梦瑶 发表于 2019-5-23 17:29:49 | 显示全部楼层 |阅读模式

今天在学习研究 .net core 与 mysql 数据库之间的时候,遇到 select 查询出来的数据,要如何与程序中的数据模型对应,而且这自定义的模型如何组成一个 array list ,然后最后又怎么将这个 array list 转换成 webapi 友好的 json 格式返回,以前在 php、typeScript 或 java 都可以利用语言自带的函数或方法顺利的解决上述的问题。

但到了 .net core 就摸不着头脑了,网上的方法都是基本上都写一大堆手动拼接代码的处理函数来解决,感觉实在是不方便,难道强大的 C# 没有自己简单处理这个问题的方法了吗?

不过找来找去较为简单处理这个问题的方法,就暂时先用着吧。

先来个简单处理这个例子的实例

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Newtonsoft.Json.Linq;
  7. using MySql.Data.MySqlClient;
  8. using System.Collections;
  9. using Microsoft.AspNetCore.Server.Kestrel.Internal.System.Collections.Sequences;
  10. using System.Runtime.Serialization.Json;
  11. using System.IO;
  12. using System.Text;
  13. namespace NetCode.Controllers
  14. {
  15. [Route("api/[controller]")]
  16. public class ValuesController : Controller
  17. {
  18. [HttpPost]
  19. public dynamic Post([FromBody]JObject value)
  20. {
  21. List<UserModel> um = new List<UserModel>();
  22. Random random = new Random();
  23. for (var i = 0; i < 10; i++)
  24. {
  25. UserModel item = new UserModel();
  26. item.id = i;
  27. item.name = "name" + i;
  28. item.age = random.Next(10, 99);
  29. item.createTime = DateTime.Now;
  30. um.Add(item);
  31. }
  32. DataContractJsonSerializer json = new DataContractJsonSerializer(um.GetType());
  33. string szJson = "";
  34. //序列化
  35. using (MemoryStream stream = new MemoryStream())
  36. {
  37. json.WriteObject(stream, um);
  38. szJson = Encoding.UTF8.GetString(stream.ToArray());
  39. }
  40. return szJson;
  41. }
  42. }
  43. public class UserModel
  44. {
  45. public int id { get; set; }
  46. public string name { get; set; }
  47. public int age { get; set; }
  48. public dynamic createTime { get; set; }
  49. }
  50. }
复制代码

看了上面的代码感觉有点不太爽。看中间的数据动态添加的代码:

  1. for (var i = 0; i < 10; i++)
  2. {
  3. UserModel item = new UserModel();
  4. item.id = i; item.name = "name" + i;
  5. item.age = random.Next(10, 99);
  6. item.createTime = DateTime.Now;
  7. um.Add(item);
  8. }
复制代码

这里能不能再简洁点,用一句话就能搞定。答案是当然可以了。

  1. for (var i = 0; i < 10; i++)
  2. {
  3. um.Add(new UserModel()
  4. {
  5. id = i,
  6. name = "name" + i,
  7. age = random.Next(10, 99),
  8. createTime = DateTime.Now
  9. });
  10. }
复制代码

不过这种写法博主感觉还是没有前面学习过的 typeScript 语言的写法简洁,也可能是 C# 的特性吧(也有可能存在着更简洁的,没有被博主发现而已,以后发现了再补)。

前面写过了自定义模型最基本的数组列组合方法后,现在是进入升级篇那就是结合数据库搜索列表来实践,这也是必经之路。

那么具体怎么做可以看最近练习的【mysql的使用】这篇文章的内容

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精华推荐
  • 探究!做设计之前的“构思”

    探究!做设计之前的“构思”

  • 汉字之美!中文字体设计原则

    汉字之美!中文字体设计原则

  • 一支互联网雪糕的诞生

    一支互联网雪糕的诞生

  • 设计灵感来自何处?

    设计灵感来自何处?

  • 自行车停靠架和旧自行车变废为宝家居创意作品大全

    自行车停靠架和旧自行车变废为宝家居创意作

  • 造车生死局:要么转型,要么死

    造车生死局:要么转型,要么死

  • 从欠8千万到年赚8亿

    从欠8千万到年赚8亿

  • 一座非典型五线小城的日常

    一座非典型五线小城的日常

QQ客服热线
QQ:1090281100 周一至周日:09:00 - 21:00
WeChat:duzhe1069
Email:kaixin1069@vip.qq.com

优创意logo

勿要吝啬你无形资产,请为创新续源,知识、点子、灵感、经验、需求等均是创新源泉,你不经意的一句话将是另一个人的灵感。明天的明天,还有明天,我们应该把握今天,每一个今天,都有一个新的事物在出现,今天的漠视明天的落后,不浪费每一个学习的时刻,学习助力非凡。

技术支持 Discuz! X3.4 - 3.5 beta © 2001-2019 Comsenz Inc.

小黑屋|手机版|优创意 ( 粤ICP备16085288号-1 )|申请友链

粤公网安备 44011102001144 号 GMT+8, 2020-10-29 07:54 , Processed in 0.091829 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表