private string GetValue(ExpressionModel key, bool privateFirst) { try { var res = Get(key.Key, privateFirst); if (res != null) { return(res); } string currentKey = key.CurrentKey; if (key.IsArray) { currentKey = key.ArrayKey; } res = Get(currentKey, privateFirst); if (res == null) { return(string.Empty); } var arg = res; if (key.SubExpression == null) { if (key.IsArray) { JArray arr = JsonHelper.GetArray(arg, currentKey); if (key.Index >= arr.Count) { return(string.Empty); } else { return(arr[key.Index].ToString()); } } else { return(arg); } } else { if (key.IsArray) { JArray arr = JsonHelper.GetArray(arg, currentKey); var token = JsonHelper.FindToken(arr[key.Index], key.SubExpression.Key, currentKey); return(token?.ToString()); } else { JObject o = JsonHelper.GetObject(arg, currentKey); var token = JsonHelper.FindToken(o, key.SubExpression.Key, currentKey); return(token?.ToString()); } } } catch { return(key.Key); } }