ExtractText.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Collections.Generic;
  3. using Newtonsoft.Json.Linq;
  4. namespace analyzeJSON
  5. {
  6. public class ExtractText
  7. {
  8. private readonly Dictionary<string, bool> keysToExtract;
  9. private readonly Dictionary<string, List<string>> extracted = new();
  10. public ExtractText(Dictionary<string, bool> keys)
  11. {
  12. keysToExtract = keys ?? throw new ArgumentNullException(nameof(keys));
  13. }
  14. public void Extract(JToken token)
  15. {
  16. if (token.Type != JTokenType.String)
  17. return;
  18. var tokenName = AnalyzeJSON.GetNameFromPath(token.Path);
  19. if (string.IsNullOrWhiteSpace(tokenName))
  20. return;
  21. if (!keysToExtract.ContainsKey(tokenName))
  22. return;
  23. if (!extracted.ContainsKey(tokenName))
  24. extracted.Add(tokenName, new List<string>());
  25. extracted[tokenName].Add(token.Value<string>());
  26. }
  27. public Dictionary<string, List<string>> Result => extracted;
  28. }
  29. }