2013-02-06 87 views
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自己识别类型而不指定它。那可能吗?JSon反序列化获取类型

最好的问候, 布赖恩

+0

我就先用“string.contains(信息。 ..)“但问题是,当保存几种不同类型时。 编辑:我也尝试使用.getType()获得类型,但是我只是得到一个JSonObject。 – Brian

回答

1

Json.net可惜不能推断出json的类型,但如果你想使用JSON对象操作动态,请从JToken,JObject和JArray类型Newtonsoft.Json.Linq命名空间。您可以从一个路径像这样

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

我觉得Json.net的这部分是非常有用的阅读JSON和我希望它可以帮助你:)