在反序列化

时间:2015-12-23 11:49:14

标签: .net json json.net

我的代码非常简单但无法正常运行:

var binder = new TypeNameSerializationBinder("MyNamespace.{0}, MyAssembly");

JsonSerializerSettings settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All,
    Binder = binder
};

string json = ...
JsonSerializer js = JsonSerializer.Create(settings);
// binder not called
var obj1 = js.Deserialize(new StringReader(json), bindingContext.ModelType);
// binder not called either
var obj = JsonConvert.DeserializeObject(json, bindingContext.ModelType, settings);
// not called even when serializing
JsonConvert.SerializeObject(obj, bindingContext.ModelType, settings);

TypeNameSerializationBinder 是我从here复制的简单活页夹。 没有调用binder的方法。 $ type属性被忽略。所有项目都被反序列化为父类实例。我试图反序化的类型是Dictionary<String, MyParentClass>

1 个答案:

答案 0 :(得分:1)

在JSON字符串中,“$ type”属性应该是对象的第一个属性。这似乎是一个问题。