public static DTObject Transform(DTObject arg) { //{component,action,argument:{elements:[{id,name,metadata}]}} DTObject result = DTObject.CreateReusable(); DTObject sender = DTObject.CreateReusable(); foreach (var p in arg.GetDictionary()) { var name = p.Key; var value = p.Value; switch (name) { case "pagination[page]": { sender["metadata.page"] = value; break; } case "pagination[pages]": { sender["metadata.pages"] = value; break; } case "pagination[perpage]": { sender["metadata.perpage"] = value; break; } case "pagination[total]": { sender["metadata.total"] = value; break; } case "sort[field]": { sender["metadata.sort.field"] = value; break; } case "sort[sort]": { sender["metadata.sort.sort"] = value; break; } case "info[component]": { result["component"] = value; break; } case "info[action]": { result["action"] = value; break; } case "info[senderId]": { sender["id"] = value; break; } case "info[senderName]": { sender["name"] = value; break; } case "info[dates]": { sender["metadata.dates"] = GetArray(value); break; } case "info[datetimes]": { sender["metadata.datetimes"] = GetArray(value); break; } default: { FillQuery(sender, name, value); break; } } } result.SetObject("argument.sender", sender); return(result); }