I created small recursive C# app to parse unknown JSON string to find particular Key/Value pair's using Newtonsoft.Json.dll
. It works OK on small JSON strings, but takes really long time, if JSON is bigger: 3.5MB JSON file with 15K+ lines takes >3 min to parse. Parsing same file using RegExp takes <1 sec. Is that JsonConvert.DeserializeObject()
takes that long ?!
string json = @"{""origin-of_error"" : ""error_message"",""foo"" : ""bar""}";
static void GetJsonValue (string json, string findStr = "foo")
{
try
{
if (Regex.Match(json, @"^\[", RegexOptions.Multiline).Success)
{
// JSON string Array []
var jArr = JsonConvert.DeserializeObject<List<Object>>(json);
foreach (var jLine in jArr) GetJsonValue(jLine.ToString());
}
else
{
// JSON string KEY:VALUE
var jLog = JsonConvert.DeserializeObject<Dictionary<String, Object>>(json);
foreach (KeyValuePair<string, object> jEntry in jLog)
{
if (jEntry.Key.ToString() == findStr) Console.WriteLine("MATCH:" + jEntry.ToString());
GetJsonValue(jEntry.Value.ToString());
}
}
}
catch { }
}