如何使用JSON.net解析JSON文件

我试图读取一个JSON文件并解析它。 我有这个代码从我的文件中读取

StreamReader re = new StreamReader("artists.json"); JsonTextReader reader = new JsonTextReader(re); 

但是我现在如何从读者解析它以便我可以从文件中搜索数据?

我试过阅读文档但找不到任何东西

  using Newtonsoft.Json; //.. JsonSerializer se = new JsonSerializer(); object parsedData = se.Deserialize(reader); 

回应“有关如何实施这一点的一些细节会有所帮助。 – aknatn”

  using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Text; public class Program { public static void Main() { //JSON = {"Property1":"as","CollectionProperty":[{"prop1":"1","prop2":"2","prop3":"3"}]} //This Top part is just to build a stream //- No need to do this if you are accessing a file string JSON = "{\"Property1\":\"SomePropName\",\"CollectionProperty\":"+ "[{\"prop1\":\"1\",\"prop2\":\"2\",\"prop3\":\"3\"}]}"; byte[] byteArray = Encoding.UTF8.GetBytes(JSON); //byte[] byteArray = Encoding.ASCII.GetBytes(contents); MemoryStream stream = new MemoryStream(byteArray); // convert stream to string JsonSerializer se = new JsonSerializer(); StreamReader re = new StreamReader(stream); JsonTextReader reader = new JsonTextReader(re); var DeserializedObject = se.Deserialize(reader); Console.WriteLine(DeserializeObject.Property1); //"...so I can search data from the file?" //This is up to you and how you wanna handle it, but you now have JSON //Deserialized and stored in memory. 'How to search' depends on objects class //Also, Original question said he had the JSON. I would recommend using //json2csharp.com/ or jsonutils.com/ //to retrieve the classes in order to Deserialize it to your object. //Note 1: You don't always have to cast it //- I just always try to if and when I can //Note 2: Because you are using a StreamReader, //this will account for Large JSON Objects } public class Collections { public List CollectionProperty = new List(); public string Property1; } public class CollectionProperty { public string prop1 { get; set; } public string prop2 { get; set; } public string prop3 { get; set; } } } 

如果要将其加载到JObject动态类型(而不是将其反序列化为.NET类型),可以使用JObject.Load方法

 using(var sr = new StreamReader("artists.json")) { var reader = new JsonTextReader(sr); var jObject = JObject.Load(reader); //Get property from JObject var someValue = jObject.GetValue("someProperty").Value(); // JObject can be cast into a dynamic var dObject = (dynamic)jObject; someValue = (string)dObject.someProperty; }