【发布时间】:2010-08-18 14:47:02
【问题描述】:
我有一个简单的类层次结构。 Foo 是基类。 Bar 和 Baz 继承自 Foo。这些类的实例存储在一个列表中。我必须将列表序列化为 JSON。它工作得很好。但问题是将其反序列化回 List.
我将 Foos、Bars 和 Bazs 放在列表中,对其进行序列化,当我反序列化它时,我只得到 Foos :) 不过我想要我的 Bars 和 Bazs。 Json.NET 能做到吗?
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace JsonTest
{
class Foo
{
int number;
public Foo(int number)
{
this.number = number;
}
public int Number
{
get { return number; }
set { number = value; }
}
}
class Bar : Foo
{
string name;
public Bar(int number, string name)
: base(number)
{
this.name = name;
}
public string Name
{
get { return name; }
set { name = value; }
}
}
class Baz : Foo
{
float time;
public Baz(int number, float time)
: base(number)
{
this.time = time;
}
public float Time
{
get { return time; }
set { time = value; }
}
}
class Program
{
static void Main(string[] args)
{
List<Foo> fooList = new List<Foo>();
fooList.Add(new Foo(123));
fooList.Add(new Bar(123, "Hello, world"));
fooList.Add(new Baz(123, 0.123f));
string json = JsonConvert.SerializeObject(fooList, Formatting.Indented);
List<Foo> fooList2 = JsonConvert.DeserializeObject<List<Foo>>(json);
// Now I have only Foos in the List
}
}
}
【问题讨论】:
标签: c# json serialization