AnalyzeJSON.cs 1020 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.IO;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. namespace analyzeJSON
  6. {
  7. public class AnalyzeJSON
  8. {
  9. private readonly JObject json;
  10. public AnalyzeJSON(string path)
  11. {
  12. if (!File.Exists(path))
  13. throw new ArgumentNullException("File doesn't exist!");
  14. using StreamReader sr = new StreamReader(path);
  15. var jsonString = sr.ReadToEnd();
  16. json = JsonConvert.DeserializeObject<JObject>(jsonString);
  17. }
  18. private void Traverse(IJEnumerable<JToken> tokens, Action<JToken> action)
  19. {
  20. foreach (var token in tokens)
  21. {
  22. action.Invoke(token);
  23. if (token.HasValues)
  24. Traverse(token.Children(), action);
  25. }
  26. }
  27. public void Traverse(Action<JToken> action)
  28. {
  29. if (!json.HasValues)
  30. return;
  31. Traverse(json.Children(), action);
  32. }
  33. }
  34. }