{"id":354,"date":"2009-09-26T09:28:43","date_gmt":"2009-09-26T01:28:43","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=354"},"modified":"2013-05-04T23:51:43","modified_gmt":"2013-05-05T06:51:43","slug":"datasnap-2010-enviando-e-recebendo-array-de-objetos","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/","title":{"rendered":"DataSnap 2010 \u2013 Enviando e recebendo ARRAY de objetos"},"content":{"rendered":"<p>Dando sequ\u00eancia ao tema transfer\u00eancia de objetos com DataSnap o qual iniciei escrevendo sobre a <a href=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-objetos\/\">transfer\u00eancia de um simples objeto<\/a>, o qual \u00e9 pr\u00e9-requisito para entender este artigo, neste post descrevo como transferir uma lista (Array) de objetos.<\/p>\n<p>Como j\u00e1 mencionei todo o envio e retorno de objetos em DataSnap deve ser feito atrav\u00e9s de JSON, no caso de retorno de uma lista de objetos devemos retornar um TJSONArray, o qual ter\u00e1 uma lista de TJSONObject.<\/p>\n<p>Abaixo a implementa\u00e7\u00e3o de uma fun\u00e7\u00e3o o qual retorna uma array de TCustomer.<\/p>\n<pre class=\"brush: delphi\">function TServerMethods2.ListofCustomer: TJSONArray;\r\nvar\r\n  I: Integer;\r\n  myCustomer: TCustomer;\r\nbegin\r\n  Result := TJSONArray.Create;\r\n\r\n  for I := 0 to 20 do\r\n  begin\r\n    myCustomer := GetCustomer;\r\n    myCustomer.Name := 'Customer ' + IntToStr(i);\r\n    myCustomer.Age := i;\r\n    Result.AddElement(CustomerToJSON(myCustomer));\r\n  end;\r\n\r\nend;<\/pre>\n<p>Repare que cada elemento do Array \u00e9 transformado de TCustomer para TJSONValue, o que requer no lado cliente a convers\u00e3o de TJSONValue para TCustomer, abaixo um exemplo<\/p>\n<pre class=\"brush: delphi\">var\r\n  proxy: TServerMethods2Client;\r\n  mySingleCustomer: TCustomer;\r\n  allCustomers : TJSONArray;\r\n  i: Integer;\r\nbegin\r\n\r\n  try\r\n    proxy := TServerMethods2Client.Create(SQLConnection1.DBXConnection);\r\n    allCustomers := proxy.ListofCustomer;\r\n\r\n    for i := 0 to allCustomers.Size -1 do\r\n    begin\r\n      mySingleCustomer := JSONToCustomer(allCustomers.Get(i));\r\n      MMCustomer.Lines.Add(mySingleCustomer.ToString);\r\n      mySingleCustomer.Free;\r\n    end;\r\n\r\n  finally\r\n    proxy.Free;\r\n  end;\r\n\r\nend;<\/pre>\n<p>No pr\u00f3ximo post vamos abordanar o tema relacionado ao retorno de objetos complexos.<\/p>\n<p>Download do <a href=\"http:\/\/cc.embarcadero.com\/Download.aspx?id=27361\">c\u00f3digo fonte<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dando sequ\u00eancia ao tema transfer\u00eancia de objetos com DataSnap o qual iniciei escrevendo sobre a transfer\u00eancia de um simples objeto, o qual \u00e9 pr\u00e9-requisito para entender este artigo, neste post descrevo como transferir uma lista (Array) de objetos. Como j\u00e1 mencionei todo o envio e retorno de objetos em DataSnap deve ser feito atrav\u00e9s de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4202,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"yes","footnotes":""},"categories":[102],"tags":[23,181],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Retornando array de objetos com DataSnap e Delphi 2010 | Andreano Lanusse Blog<\/title>\n<meta name=\"description\" content=\"Dando sequ\u00eancia ao tema transfer\u00eancia de objetos com DataSnap o qual iniciei escrevendo sobre a transfer\u00eancia de um simples objeto, o qual \u00e9 pr\u00e9-requisito\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Retornando array de objetos com DataSnap e Delphi 2010 | Andreano Lanusse Blog\" \/>\n<meta property=\"og:description\" content=\"Dando sequ\u00eancia ao tema transfer\u00eancia de objetos com DataSnap o qual iniciei escrevendo sobre a transfer\u00eancia de um simples objeto, o qual \u00e9 pr\u00e9-requisito\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2009-09-26T01:28:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-05T06:51:43+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_Delphi.png\" \/>\n\t<meta property=\"og:image:width\" content=\"170\" \/>\n\t<meta property=\"og:image:height\" content=\"170\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"1 minuto\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_Delphi.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_Delphi.png\",\"width\":170,\"height\":170},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/\",\"name\":\"Retornando array de objetos com DataSnap e Delphi 2010 | Andreano Lanusse Blog\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#primaryimage\"},\"datePublished\":\"2009-09-26T01:28:43+00:00\",\"dateModified\":\"2013-05-05T06:51:43+00:00\",\"description\":\"Dando sequ\\u00eancia ao tema transfer\\u00eancia de objetos com DataSnap o qual iniciei escrevendo sobre a transfer\\u00eancia de um simples objeto, o qual \\u00e9 pr\\u00e9-requisito\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"DataSnap 2010 \\u2013 Enviando e recebendo ARRAY de objetos\",\"datePublished\":\"2009-09-26T01:28:43+00:00\",\"dateModified\":\"2013-05-05T06:51:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#webpage\"},\"commentCount\":5,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#primaryimage\"},\"keywords\":[\"DataSnap\",\"Delphi\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/354"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=354"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/354\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/4202"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=354"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}