加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – JSON:序列化从IEnumerable派生的类型

发布时间:2020-12-16 06:56:32 所属栏目:asp.Net 来源:网络整理
导读:JavaScriptSerializer将从IEnumerable派生的类型序列化为JavaScript数组.它对数组和列表很方便,但在某些情况下我需要序列化在派生类型中声明的属性(例如,键入IGrouping).这里有一些示例代码: var items = new[] { "aaabbb","abcd","bdsasd","bsdqw" };IGrou
JavaScriptSerializer将从IEnumerable派生的类型序列化为JavaScript数组.它对数组和列表很方便,但在某些情况下我需要序列化在派生类型中声明的属性(例如,键入IGrouping).这里有一些示例代码:

var items = new[] { "aaabbb","abcd","bdsasd","bsdqw" };
IGrouping<char,string> data = items.GroupBy(i => i[0]).First();
var serializer = new JavaScriptSerializer();
var serialized = serializer.Serialize(data);
// serialized == "["aaabbb","abcd"]"
// doesn't contain definition for IGrouping.Key property

这个问题有什么简单的解决方案吗?

解决方法

你可以试试这个:

var items = new[] { "aaabbb","bsdqw" };
var data = (from x in items
            group x by x[0] into g
            select new
            {
                Key = g.Key,Value = g
            }).First();
var serializer = new JavaScriptSerializer();
var serialized = serializer.Serialize(data);

或者如果您愿意:

var items = new[] { "aaabbb","bsdqw" };
var data = items.GroupBy(i => i[0])
    .Select(x => new { Key = x.Key,Value = x })
    .First();
var serializer = new JavaScriptSerializer();
var serialized = serializer.Serialize(data);

在这两种情况下,结果将是:

{"Key":"a","Value":["aaabbb","abcd"]}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读