public void CanResolveOneEmptyArraysAndOneWithValue() { using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None)) { DynamicJsonValue obj1 = new DynamicJsonValue(); DynamicJsonValue obj2 = new DynamicJsonValue(); obj1["name"] = new DynamicJsonArray { 1 }; obj2["name"] = new DynamicJsonArray(); var conflictResovlerAdvisor = new ConflictResolverAdvisor( new List <BlittableJsonReaderObject> { ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1") }, ctx); var resolvled = conflictResovlerAdvisor.Resolve().Document; BlittableJsonReaderArray name; resolvled.TryGet("name", out name); Assert.Equal(">>>> auto merged array start", name[0].ToString()); Assert.Equal((long)1, name[1]); Assert.Equal("<<<< auto merged array end", name[2].ToString()); } }
protected static void AddProjectionToResult(DynamicJsonValue result, string key, object fieldVal) { if (fieldVal is List <object> list) { var array = new DynamicJsonArray(); for (int i = 0; i < list.Count; i++) { if (list[i] is Document d) { array.Add(d.Data); } else { array.Add(list[i]); } } fieldVal = array; } if (fieldVal is Document d2) { fieldVal = d2.Data; } result[key] = fieldVal; }
public override DynamicJsonValue ToJson() { var json = base.ToJson(); json[nameof(Items)] = new DynamicJsonArray(Items.Select(x => x.ToJson())); return(json); }
public void CanMergeArrays() { using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None)) { DynamicJsonValue obj1 = new DynamicJsonValue(); DynamicJsonValue obj2 = new DynamicJsonValue(); obj1["Nicks"] = new DynamicJsonArray { "Oren" }; obj2["Nicks"] = new DynamicJsonArray { "Ayende" }; var conflictResovlerAdvisor = new ConflictResolverAdvisor( new List <BlittableJsonReaderObject> { ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1") }, ctx); var resolvled = conflictResovlerAdvisor.Resolve().Document; BlittableJsonReaderArray nicks; resolvled.TryGet("Nicks", out nicks); Assert.Equal(">>>> auto merged array start", nicks[0].ToString()); Assert.Equal("Oren", nicks[1].ToString()); Assert.Equal("Ayende", nicks[2].ToString()); Assert.Equal("<<<< auto merged array end", nicks[3].ToString()); } }
public Task GetReplicationIncomingActivityTimes() { using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { var data = new DynamicJsonArray(); foreach (var item in Database.ReplicationLoader.IncomingLastActivityTime) { data.Add(new DynamicJsonValue { ["Key"] = new DynamicJsonValue { ["SourceDatabaseId"] = item.Key.SourceDatabaseId, ["SourceDatabaseName"] = item.Key.SourceDatabaseName, ["SourceMachineName"] = item.Key.SourceMachineName, ["SourceUrl"] = item.Key.SourceUrl }, ["Value"] = item.Value }); } context.Write(writer, new DynamicJsonValue { ["Stats"] = data }); } return(Task.CompletedTask); }
private Task GetConflictsForDocument(string docId) { long maxEtag = 0; using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) using (context.OpenReadTransaction()) { var array = new DynamicJsonArray(); var conflicts = context.DocumentDatabase.DocumentsStorage.ConflictsStorage.GetConflictsFor(context, docId); foreach (var conflict in conflicts) { if (maxEtag < conflict.Etag) { maxEtag = conflict.Etag; } array.Add(new DynamicJsonValue { [nameof(GetConflictsResult.Conflict.ChangeVector)] = conflict.ChangeVector, [nameof(GetConflictsResult.Conflict.Doc)] = conflict.Doc, [nameof(GetConflictsResult.Conflict.LastModified)] = conflict.LastModified }); } context.Write(writer, new DynamicJsonValue { [nameof(GetConflictsResult.Id)] = docId, [nameof(GetConflictsResult.LargestEtag)] = maxEtag, [nameof(GetConflictsResult.Results)] = array }); return(Task.CompletedTask); } }
public Task GetReplicationOugoingFailureStats() { DocumentsOperationContext context; using (ContextPool.AllocateOperationContext(out context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { var data = new DynamicJsonArray(); foreach (var item in Database.DocumentReplicationLoader.OutgoingFailureInfo) { data.Add(new DynamicJsonValue { ["Key"] = new DynamicJsonValue { ["Url"] = item.Key.Url, ["Database"] = item.Key.Database, ["Disabled"] = item.Key.Disabled, ["IgnoredClient"] = item.Key.IgnoredClient, ["SkipIndexReplication"] = item.Key.SkipIndexReplication, ["SpecifiedCollections"] = item.Key.SpecifiedCollections }, ["Value"] = new DynamicJsonValue { ["ErrorCount"] = item.Value.ErrorCount, ["NextTimout"] = item.Value.NextTimout } }); } context.Write(writer, data); } return(Task.CompletedTask); }
public async Task GetReplicationOutgoingFailureStats() { using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream())) { var data = new DynamicJsonArray(); foreach (var item in Database.ReplicationLoader.OutgoingFailureInfo) { data.Add(new DynamicJsonValue { ["Key"] = new DynamicJsonValue { [nameof(item.Key.Url)] = item.Key.Url, [nameof(item.Key.Database)] = item.Key.Database, [nameof(item.Key.Disabled)] = item.Key.Disabled }, ["Value"] = new DynamicJsonValue { ["ErrorsCount"] = item.Value.Errors.Count, [nameof(item.Value.Errors)] = new DynamicJsonArray(item.Value.Errors.Select(e => e.ToString())), [nameof(item.Value.NextTimeout)] = item.Value.NextTimeout, [nameof(item.Value.RetryOn)] = item.Value.RetryOn, [nameof(item.Value.External)] = item.Value.External, [nameof(item.Value.DestinationDbId)] = item.Value.DestinationDbId, [nameof(item.Value.LastHeartbeatTicks)] = item.Value.LastHeartbeatTicks, } }); } context.Write(writer, new DynamicJsonValue { ["Stats"] = data }); } }
public override DynamicJsonValue ToJson(JsonOperationContext context) { var djv = base.ToJson(context); if (Commands != null) { var dja = new DynamicJsonArray(); foreach (var command in Commands) { dja.Add(command.ToJson(context)); } djv[nameof(Commands)] = dja; } if (RemoveCommands != null) { var dja2 = new DynamicJsonArray(); foreach (var command in RemoveCommands) { dja2.Add(command.ToJson(context)); } djv[nameof(RemoveCommands)] = dja2; } return(djv); }
public JsonInfo(string json) { var jsonObject = Json.Decode(json); status = (int)jsonObject.status; payload = (DynamicJsonArray)jsonObject.payload; }
public DynamicJsonValue ToJson() { var djv = new DynamicJsonValue(); var dict = new DynamicJsonValue(); djv[nameof(RequestLatencies)] = dict; foreach (var key in RequestLatencies.Keys) { var queue = RequestLatencies[key]; if (queue == null) { continue; } var list = new DynamicJsonArray(); foreach (var details in queue) { list.Add(details.ToJson()); } dict[key] = list; } return(djv); }
}// EOM public List <string> GetAttributeValues(int id) { List <string> attributeValues = new List <string>(); Rclient.BaseUrl = new Uri($"{Config.endpoint}/api/v2/nodes/{id}/categories"); var request = new RestRequest(Method.GET).AddHeader("otcsticket", LoginViewModel.ticket); //var response = Rclient.Execute<PocoResult>(request); var response = Rclient.Execute <PocoResult>(request); var test = Json.Decode(response.Content); DynamicJsonArray test2 = test.results; var list = new List <Object>(); foreach (var index in test2) { list.Add(index); } Console.WriteLine(test.data.categories); return(attributeValues); }
public static DynamicJsonValue ToJson(ServerStore serverStore, TransactionOperationContext context) { var djv = new DynamicJsonValue { [$"@{nameof(General)}"] = General.ToJson() }; var mapping = SnmpWatcher.GetMapping(serverStore, context); foreach (var kvp in mapping) { var record = serverStore.LoadDatabaseRecord(kvp.Key, out _); if (record == null) { continue; } var array = new DynamicJsonArray(); foreach (var field in typeof(Databases).GetFields()) { var fieldValue = GetFieldValue(field); var oid = string.Format(fieldValue.Oid, kvp.Value); array.Add(CreateJsonItem(Root + oid, fieldValue.Description)); } djv[kvp.Key] = new DynamicJsonValue { [$"@{nameof(General)}"] = array, [nameof(Indexes)] = Indexes.ToJson(serverStore, context, record, kvp.Value) }; } return(djv); }
public override DynamicJsonValue ToJsonWithFilter(CanAccessDatabase filter) { var items = new DynamicJsonArray(); foreach (var mountPointUsage in Items) { var usageAsJson = mountPointUsage.ToJsonWithFilter(filter); if (usageAsJson != null) { usageAsJson.RemoveInMemoryPropertyByName(nameof(MountPointUsage.Items)); items.Add(usageAsJson); } } if (items.Count == 0) { return(null); } var json = base.ToJson(); json[nameof(Items)] = items; return(json); }
public Task GetAllTombstones() { var start = GetIntValueQueryString("start", false) ?? 0; var take = GetIntValueQueryString("take", false) ?? 1024; HttpContext.Response.StatusCode = 200; DocumentsOperationContext context; using (ContextPool.AllocateOperationContext(out context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) using (context.OpenReadTransaction()) { var tombstones = context.DocumentDatabase.DocumentsStorage.GetTombstonesFrom(context, 0, start, take).ToList(); var array = new DynamicJsonArray(); foreach (var tombstone in tombstones) { array.Add(new DynamicJsonValue { ["Key"] = tombstone.Key.ToString(), ["Collection"] = tombstone.Collection.ToString(), ["Etag"] = tombstone.Etag, ["DeletedEtag"] = tombstone.DeletedEtag, ["ChangeVector"] = tombstone.ChangeVector.ToJson() }); } context.Write(writer, array); } return(Task.CompletedTask); }
public async Task GetReplicationActiveConnections() { using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) await using (var writer = new AsyncBlittableJsonTextWriter(context, ResponseBodyStream())) { var incoming = new DynamicJsonArray(); foreach (var item in Database.ReplicationLoader.IncomingConnections) { incoming.Add(new DynamicJsonValue { ["SourceDatabaseId"] = item.SourceDatabaseId, ["SourceDatabaseName"] = item.SourceDatabaseName, ["SourceMachineName"] = item.SourceMachineName, ["SourceUrl"] = item.SourceUrl }); } var outgoing = new DynamicJsonArray(); foreach (var item in Database.ReplicationLoader.OutgoingConnections) { outgoing.Add(new DynamicJsonValue { ["Url"] = item.Url, ["Database"] = item.Database, ["Disabled"] = item.Disabled }); } context.Write(writer, new DynamicJsonValue { ["IncomingConnections"] = incoming, ["OutgoingConnections"] = outgoing }); } }
public Task GetReplicationReconnectionQueue() { DocumentsOperationContext context; using (ContextPool.AllocateOperationContext(out context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { var data = new DynamicJsonArray(); foreach (var queueItem in Database.DocumentReplicationLoader.ReconnectQueue) { data.Add(new DynamicJsonValue { ["Url"] = queueItem.Url, ["Database"] = queueItem.Database, ["Disabled"] = queueItem.Disabled, ["IgnoredClient"] = queueItem.IgnoredClient, ["SkipIndexReplication"] = queueItem.SkipIndexReplication, ["SpecifiedCollections"] = queueItem.SpecifiedCollections }); } context.Write(writer, data); } return(Task.CompletedTask); }
public DynamicJsonValue ToJson() { var res = new DynamicJsonValue { [nameof(Port)] = Port, [nameof(Url)] = Url, [nameof(Certificate)] = Certificate, [nameof(NodeTag)] = NodeTag, [nameof(ServerId)] = ServerId }; if (Urls == null) { return(res); } var array = new DynamicJsonArray(); foreach (var url in Urls) { array.Add(url); } res[nameof(Urls)] = array; return(res); }
public Task GetReplicationConflictsById() { var docId = GetQueryStringValueAndAssertIfSingleAndNotEmpty("docId"); DocumentsOperationContext context; using (ContextPool.AllocateOperationContext(out context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) using (context.OpenReadTransaction()) { var conflicts = context.DocumentDatabase.DocumentsStorage.GetConflictsFor(context, docId); var array = new DynamicJsonArray(); foreach (var conflict in conflicts) { array.Add(new DynamicJsonValue { ["Key"] = conflict.Key, ["ChangeVector"] = conflict.ChangeVector.ToJson(), ["Doc"] = conflict.Doc }); } context.Write(writer, array); HttpContext.Response.StatusCode = 200; return(Task.CompletedTask); } }
public Task GetReplicationIncomingRejectionInfo() { using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { var stats = new DynamicJsonArray(); foreach (var statItem in Database.ReplicationLoader.IncomingRejectionStats) { stats.Add(new DynamicJsonValue { ["Key"] = new DynamicJsonValue { ["SourceDatabaseId"] = statItem.Key.SourceDatabaseId, ["SourceDatabaseName"] = statItem.Key.SourceDatabaseName, ["SourceMachineName"] = statItem.Key.SourceMachineName, ["SourceUrl"] = statItem.Key.SourceUrl }, ["Value"] = new DynamicJsonArray(statItem.Value.Select(x => new DynamicJsonValue { ["Reason"] = x.Reason, ["When"] = x.When })) }); } context.Write(writer, new DynamicJsonValue { ["Stats"] = stats }); } return(Task.CompletedTask); }
public static BlittableJsonReaderObject WriteDummyDocumentForAttachment(DocumentsOperationContext context, LegacyAttachmentDetails details) { var attachment = new DynamicJsonValue { ["Name"] = details.Key, ["Hash"] = details.Hash, ["ContentType"] = string.Empty, ["Size"] = details.Size, }; var attachments = new DynamicJsonArray(); attachments.Add(attachment); var metadata = new DynamicJsonValue { [Constants.Documents.Metadata.Collection] = "@files", [Constants.Documents.Metadata.Attachments] = attachments, [Constants.Documents.Metadata.LegacyAttachmentsMetadata] = details.Metadata }; var djv = new DynamicJsonValue { [Constants.Documents.Metadata.Key] = metadata, }; return(context.ReadObject(djv, details.Id)); }
protected override IDataProvider <EmbeddedArrayValue> CreateArrayEmbedDataProvider(ReferenceInformation refInfo, DbConnection connection) { var queryParameters = string.Join(" and ", refInfo.ForeignKeyColumns.Select((column, idx) => $"\"{QuoteColumn(column)}\" = :p{idx}")); var query = $"select * from \"{QuoteTable(refInfo.SourceSchema, refInfo.SourceTableName)}\" where {queryParameters}"; return(new SqlStatementProvider <EmbeddedArrayValue>(connection, query, specialColumns => GetColumns(specialColumns, refInfo.SourcePrimaryKeyColumns), reader => { var objectProperties = new DynamicJsonArray(); var specialProperties = new List <DynamicJsonValue>(); var attachments = new List <Dictionary <string, byte[]> >(); while (reader.Read()) { objectProperties.Add(ExtractFromReader(reader, refInfo.TargetDocumentColumns)); attachments.Add(ExtractAttachments(reader, refInfo.TargetAttachmentColumns)); if (refInfo.ChildReferences != null) { // fill only when used specialProperties.Add(ExtractFromReader(reader, refInfo.TargetSpecialColumnsNames)); } } return new EmbeddedArrayValue { ArrayOfNestedObjects = objectProperties, SpecialColumnsValues = specialProperties, Attachments = attachments }; })); }
private DynamicJsonArray GetProcessThreadCollection(Process proc) { var dja = new DynamicJsonArray(); var collection = proc.Threads; for (var idx = 0; idx < collection.Count; idx++) { var i = idx; var djv = new DynamicJsonValue(); AddValue(djv, "Id", () => collection[i].Id); AddValue(djv, "BasePriority", () => collection[i].BasePriority); AddValue(djv, "CurrentPriority", () => collection[i].CurrentPriority); AddValue(djv, "PriorityBoostEnabled", () => collection[i].PriorityBoostEnabled); AddValue(djv, "PriorityLevel", () => collection[i].PriorityLevel); AddValue(djv, "StartAddress", () => collection[i].StartAddress.ToInt64()); AddValue(djv, "ThreadState", () => collection[i].ThreadState); AddValue(djv, "WaitReason", () => collection[i].WaitReason); AddValue(djv, "PrivilegedProcessorTime", () => collection[i].PrivilegedProcessorTime); AddValue(djv, "StartTime", () => collection[i].StartTime); AddValue(djv, "TotalProcessorTime", () => collection[i].TotalProcessorTime); AddValue(djv, "UserProcessorTime", () => collection[i].UserProcessorTime); AddValue(djv, "Site", () => collection[i].Site); AddValue(djv, "Container", () => collection[i].Container); dja.Add(djv); } return(dja); }
private QueryResult GetUnstableQueryResult(IDocumentStore store, DocumentStoreExtensions.DatabaseCommands commands, string query) { WaitForIndexing(store); var q = commands.Query(new IndexQuery() { Query = $"FROM INDEX 'CommentsCountPerBlog' WHERE {query}", Start = 0, PageSize = 10 }); var array = new DynamicJsonArray(); foreach (BlittableJsonReaderObject result in q.Results) { result.Modifications = new DynamicJsonValue(result); result.Modifications.Remove("@metadata"); array.Add(commands.Context.ReadObject(result, "blog")); } var djv = new DynamicJsonValue { ["_"] = array }; var json = commands.Context.ReadObject(djv, "blog"); q.Results = (BlittableJsonReaderArray)json["_"]; return(q); }
public override DynamicJsonValue ToJson() { DynamicJsonValue json = base.ToJson(); json[nameof(Nodes)] = new DynamicJsonArray(Nodes); json[nameof(Authentication)] = Authentication == null ? null : new DynamicJsonValue() { [nameof(Authentication.Basic)] = Authentication.Basic == null ? null : new DynamicJsonValue() { [nameof(Authentication.Basic.Username)] = Authentication?.Basic?.Username, [nameof(Authentication.Basic.Password)] = Authentication?.Basic?.Password }, [nameof(Authentication.ApiKey)] = Authentication.ApiKey == null ? null : new DynamicJsonValue() { [nameof(Authentication.ApiKey.ApiKeyId)] = Authentication?.ApiKey?.ApiKeyId, [nameof(Authentication.ApiKey.ApiKey)] = Authentication?.ApiKey?.ApiKey }, [nameof(Authentication.Certificate)] = Authentication.Certificate == null ? null : new DynamicJsonValue() { [nameof(Authentication.Certificate.CertificatesBase64)] = new DynamicJsonArray(Authentication?.Certificate?.CertificatesBase64) }, }; return(json); }
public void CanMergeArrays_SameStart() { using (var ctx = new JsonOperationContext(4096, 16 * 1024, 32 * 1024, SharedMultipleUseFlag.None)) { DynamicJsonValue obj1 = new DynamicJsonValue(); DynamicJsonValue obj2 = new DynamicJsonValue(); obj1["Comments"] = new DynamicJsonArray { 1, 2, 4 }; obj2["Comments"] = new DynamicJsonArray { 1, 2, 5 }; var conflictResovlerAdvisor = new ConflictResolverAdvisor( new List <BlittableJsonReaderObject> { ctx.ReadObject(obj1, "doc/1"), ctx.ReadObject(obj2, "doc/1") }, ctx); var resolvled = conflictResovlerAdvisor.Resolve().Document; BlittableJsonReaderArray comments; resolvled.TryGet("Comments", out comments); Assert.Equal(">>>> auto merged array start", comments[0].ToString()); Assert.Equal((long)1, comments[1]); Assert.Equal((long)2, comments[2]); Assert.Equal((long)4, comments[3]); Assert.Equal((long)5, comments[4]); Assert.Equal("<<<< auto merged array end", comments[5].ToString()); } }
public static DynamicJsonArray ToJson() { var array = new DynamicJsonArray(); foreach (var field in typeof(Server).GetFields()) { var fieldValue = GetFieldValue(field); var fullOid = field.Name == nameof(UpTimeGlobal) ? fieldValue.Oid : Root + fieldValue.Oid; if (fieldValue.Type == null) { array.Add(CreateJsonItem(fullOid, fieldValue.Description)); continue; } var enumUnderlyingType = Enum.GetUnderlyingType(fieldValue.Type); foreach (var value in fieldValue.Type.GetEnumValues()) { var enumUnderlyingValue = Convert.ChangeType(value, enumUnderlyingType); var finalOid = fullOid.Replace("{0}", enumUnderlyingValue.ToString()); var finalDescription = fieldValue.Description.Replace("{0}", $"{fieldValue.Type.Name}.{value}"); array.Add(CreateJsonItem(finalOid, finalDescription)); } } return(array); }
public DynamicJsonValue ToJson() { var djv = new DynamicJsonValue(); foreach (var key in Actions.Keys) { var queue = Actions[key]; if (queue == null) { continue; } var list = new DynamicJsonArray(); foreach (var details in queue) { list.Add(new DynamicJsonValue { [nameof(ActionDetails.NumberOfResults)] = details.NumberOfResults, [nameof(ActionDetails.PageSize)] = details.PageSize, [nameof(ActionDetails.Occurrence)] = details.Occurrence, [nameof(ActionDetails.Duration)] = details.Duration, [nameof(ActionDetails.Details)] = details.Details }); } djv[key] = list; } return(new DynamicJsonValue(GetType()) { [nameof(Actions)] = djv }); }
public void Add(SmapsReaderResults results) { var djv = new DynamicJsonValue { ["File"] = results.ResultString, ["Size"] = Sizes.Humane(results.Size), ["Rss"] = Sizes.Humane(results.Rss), ["SharedClean"] = Sizes.Humane(results.SharedClean), ["SharedDirty"] = Sizes.Humane(results.SharedDirty), ["PrivateClean"] = Sizes.Humane(results.PrivateClean), ["PrivateDirty"] = Sizes.Humane(results.PrivateDirty), ["TotalClean"] = results.SharedClean + results.PrivateClean, ["TotalCleanHumanly"] = Sizes.Humane(results.SharedClean + results.PrivateClean), ["TotalDirty"] = results.SharedDirty + results.PrivateDirty, ["TotalDirtyHumanly"] = Sizes.Humane(results.SharedDirty + results.PrivateDirty), ["TotalSwap"] = results.Swap, ["TotalSwapHumanly"] = Sizes.Humane(results.Swap) }; if (_dja == null) { _dja = new DynamicJsonArray(); } _dja.Add(djv); }
public static DynamicJsonValue ToJson(ServerStore serverStore, TransactionOperationContext context, RawDatabaseRecord record, long databaseIndex) { var mapping = SnmpDatabase.GetIndexMapping(context, serverStore, record.DatabaseName); var djv = new DynamicJsonValue(); if (mapping.Count == 0) { return(djv); } foreach (var indexName in record.Indexes.Keys) { if (mapping.TryGetValue(indexName, out var index) == false) { continue; } var array = new DynamicJsonArray(); foreach (var field in typeof(Indexes).GetFields()) { var fieldValue = GetFieldValue(field); var databaseOid = string.Format(fieldValue.Oid, databaseIndex); var indexOid = string.Format(databaseOid, index); array.Add(CreateJsonItem(Root + indexOid, fieldValue.Description)); } djv[indexName] = array; } return(djv); }
public static dynamic GetValue(dynamic item) { if (item is IDictionary<string, dynamic>) { item = new DynamicJsonObject(item as IDictionary<string, dynamic>); } else if (item is ArrayList && (item as ArrayList).Count > 0 && (item as ArrayList)[0] is IDictionary<string, dynamic>) { item = new DynamicJsonArray(item); } else if (item is ArrayList) { item = new List<dynamic>((item as ArrayList).ToArray()); } return item; }