English 中文(简体)
JSON: 源自E 计数的飞行类型
原标题:JSON: Serializing types derived from IEnumerable
  • 时间:2009-09-19 18:12:50
  •  标签:

贾瓦古斯里士序列化了从印古典阵列中得出的数字。 它对阵列和清单的方便性,但在某些情况下,我需要把以衍生型方式申报的特性(例如,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", "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);

或者如果你选择:

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);

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

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

查阅JSON.NET。 我在几个项目中都使用过这一系统,使JSON的序列化和脱硫化更为容易。 它将把大多数物体按单一方法分类,并允许你对按习俗属性的序列化实行更优惠的控制。

作者网站的样本:

Product product = new Product();

product.Name = "Apple";

product.Expiry = new DateTime(2008, 12, 28);

product.Price = 3.99M;

product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);

//{

//  "Name": "Apple",

//  "Expiry": new Date(1230422400000),

//  "Price": 3.99,

//  "Sizes": [

//    "Small",

//    "Medium",

//    "Large"

//  ]

//}



Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);




相关问题
热门标签