如何使用JsonTextReader两次

Phi*_*hil 11 c# json json.net

我得到一个json数据流,其中包含一个名为"type"的字段.此类型字段描述了需要在运行时创建的对象类型.看起来我无法使用JsonTextReader两次,我找不到将文本阅读器重置为开头.

using (var streamReader = new StreamReader(stream, Encoding))
using (var jsonTextReader = new JsonTextReader(streamReader))
{
    JToken token = JObject.Load(jsonTextReader);
    var type = (string) token.SelectToken("type");
    var modelType = Type.GetType("Project." + type + ", Project");

    // Fails here
    var obj = serializer.Deserialize(jsonTextReader, modelType);
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息.反序列化对象时出现意外的标记:EndObject.

Jam*_*ing 14

您可以从JToken创建JsonReader.

JsonReader reader = token.CreateReader();
Run Code Online (Sandbox Code Playgroud)