1
class Program
{
    static void Main(string[] args)
    {
        string json = JsonConvert.SerializeObject(new Account { Name = "test" }, Newtonsoft.Json.Formatting.Indented,
        new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, PreserveReferencesHandling = PreserveReferencesHandling.Objects });
        Console.Out.Write(json);
        while (true) 
        {
        }
    }
}

class Account {
    public String Name;
}

嘿,我想进入 Json。我想反序列化一个对象。我想从字符串中获取类型信息。因此,当我反序列化时,我希望 json 自己识别类型而不指定它。那可能吗?

最好的问候,布赖恩

4

1 回答 1

1

遗憾的是,Json.net 无法通过 json 推断类型,但如果您想动态操作 Json 对象,请查看 Newtonsoft.Json.Linq 命名空间中的 JToken、JObject 和 JArray 类型。你可以从这样的路径中读取 Json

var myObject = JObject.Parse(jsonString)
var someObject = myObject["myOtherObject"]["otherThing"];
var myString = (string) someObject["theString"];

我发现 Json.net 的这一部分非常有用,希望对您有所帮助:)

于 2013-02-08T05:30:18.390 回答