相关疑难解决方法(0)

Json.net实现IEnumerable <T>的自定义集合的序列化

我有一个实现IEnumerable的集合类,我无法反序列化相同的序列化版本.我正在使用Json.net v 4.0.2.13623

这是我的集合类的简化版本,它说明了我的问题

public class MyType
{
  public int Number { get; private set; }
  public MyType(int number)
  {
    this.Number = number;
  }
}

public class MyTypes : IEnumerable<MyType>
{
  private readonly Dictionary<int, MyType> c_index;
  public MyTypes(IEnumerable<MyType> seed)
  {
    this.c_index = seed.ToDictionary(item => item.Number);
  }
  public IEnumerator<MyType> GetEnumerator()
  {
    return this.c_index.Values.GetEnumerator();
  }
  IEnumerator IEnumerable.GetEnumerator()
  {
    return this.GetEnumerator();
  }
  public int CustomMethod()
  {
    return 1;  // Just for illustration
  }
}
Run Code Online (Sandbox Code Playgroud)

当我序列化它时,我得到以下json

[
  {
    "Number": 1
  },
  {
    "Number": 2 …
Run Code Online (Sandbox Code Playgroud)

c# serialization json json.net

15
推荐指数
2
解决办法
1万
查看次数

JSON:序列化从IEnumerable派生的类型

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
Run Code Online (Sandbox Code Playgroud)

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

asp.net serialization json

5
推荐指数
1
解决办法
5754
查看次数

标签 统计

json ×2

serialization ×2

asp.net ×1

c# ×1

json.net ×1