JSON:自IEnumerable派生类型的序列化 [英] JSON: Serializing types derived from IEnumerable

查看:147
本文介绍了JSON:自IEnumerable派生类型的序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

的JavaScriptSerializer序列化自IEnumerable衍生的JavaScript数组类型。它方便了数组和列表,但在某些情况下,我需要序列化派生类型(例如,在IGrouping键)声明的属性。这里是一些样本code:

JavaScriptSerializer serializes types derived from IEnumerable as JavaScript arrays. It convenient for arrays and lists but in some cases I need to serialize properties declared in derived type (e.g. Key in IGrouping). Here some sample code:

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

有没有针对此问题的任何简单的解决方案?

Is there any simple solution for this problem?

推荐答案

您可以试试这个:

var items = new[] { "aaabbb", "abcd", "bdsasd", "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);

或者如果你preFER:

or if you prefer:

var items = new[] { "aaabbb", "abcd", "bdsasd", "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);

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

In both cases the result would be:

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

这篇关于JSON:自IEnumerable派生类型的序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆