{"id":388,"date":"2009-10-11T07:37:40","date_gmt":"2009-10-10T23:37:40","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=388"},"modified":"2013-05-04T23:56:54","modified_gmt":"2013-05-05T06:56:54","slug":"datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/","title":{"rendered":"DataSnap 2010 \u2013 enviando e recebendo ARRAY de strings, numbers e outros tipos"},"content":{"rendered":"<p>Dando sequ\u00eancia ao tema transfer\u00eancia de objetos com DataSnap e Delphi 2010 o qual iniciei escrevendo sobre a <a href=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-objetos\/\"><strong>transfer\u00eancia de um simples objeto<\/strong><\/a>, e depois sobre o <a href=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-objetos\/\"><strong>envio de array objetos<\/strong><\/a>, agora vamos descrever como enviar array que contenha tipos distintos.<\/p>\n<p>Para retornar tipos String, Integer, Double, Real, Boolean e outros tipos, utilizamos a classe TJSONValue que serve como base para as classes TJSONString, TJSONNumber, TJSONTrue, TJSONFalse, TJSONNull e TJSONObject. O retorno de uma lista destes tipos \u00e9 representando pelo TJSONArray, comentando no meu post anterior.<\/p>\n<p>Abaixo exemplo de um ServerMethod que retorna um TJSONArray o qual cont\u00e9m v\u00e1rios items, cada um deles de tipos diferentes.<\/p>\n<pre class=\"brush: pascal\">function TDSServerMethods.ListofDifferentTypes: TJSONArray;\r\nvar\r\n  strval: TJSONString;\r\n  trueval : TJSONTrue;\r\n  falseval : TJSONFalse;\r\n  numval: TJSONNumber;\r\n  objval : TJSONObject;\r\nbegin\r\n  Result := TJSONArray.Create;\r\n\r\n  strval := TJSONString.Create('Return String value from DataSnap Server');\r\n  Result.AddElement(strval);\r\n\r\n  numval := TJSONNumber.Create(100);\r\n  Result.AddElement(numval);\r\n\r\n  numval := TJSONNumber.Create(99.99);\r\n  Result.AddElement(numval);\r\n\r\n  trueval := TJSONTrue.Create;\r\n  Result.AddElement(trueval);\r\n\r\n  falseval := TJSONFalse.Create;\r\n  Result.AddElement(falseval);\r\n\r\n  Result.AddElement(CustomerToJSON(GetCustomer));\r\n\r\nend;<\/pre>\n<p>Agora basta acessar o m\u00e9todo atrav\u00e9s da aplica\u00e7\u00e3o cliente o qual ser\u00e1 capaz de reconhecer todos os tipos de objetos aqui enviados.<\/p>\n<pre class=\"brush: pascal\">var\r\n  proxy: TDSServerMethodsClient;\r\n  mySingleValue: TJSONValue;\r\n  allValues: TJSONArray;\r\n  i: Integer;\r\nbegin\r\n\r\n  proxy := nil;\r\n  try\r\n    proxy := TDSServerMethodsClient.Create\r\n      (DMClientContainer.MyDSServer.DBXConnection);\r\n    allValues := proxy.ListofDifferentTypes;\r\n    for i := 0 to allValues.Size - 1 do\r\n    begin\r\n      mySingleValue := allValues.Get(i);\r\n\r\n      if mySingleValue is TJSONString then\r\n        MMLog.Lines.Add('TJSONString value ' + mySingleValue.Value)\r\n      else if mySingleValue is TJSONNumber then\r\n        MMLog.Lines.Add('TJSONNumber value ' + mySingleValue.Value)\r\n      else if mySingleValue is TJSONTrue then\r\n        MMLog.Lines.Add('TJSONTrue value ' + mySingleValue.ToString)\r\n      else if mySingleValue is TJSONFalse then\r\n        MMLog.Lines.Add('TJSONFalse value ' + mySingleValue.ToString)\r\n      else if mySingleValue is TJSONObject then\r\n        MMLog.Lines.Add('TJSONObject value ' + mySingleValue.ToString);\r\n\r\n    end;\r\n\r\n  finally\r\n    proxy.Free;\r\n  end;\r\n\r\nend;<\/pre>\n<p>Ao executar o retorno ser\u00e1:<\/p>\n<p>TJSONString value Return String value from DataSnap Server<br \/>\nTJSONString value 100<br \/>\nTJSONString value 99.99<br \/>\nTJSONTrue value true<br \/>\nTJSONFalse value false<br \/>\nTJSONObject value {&#8220;type&#8221;:&#8221;Customer.TCustomer&#8221;,&#8221;id&#8221;:1,&#8221;fields&#8221;:{&#8220;FName&#8221;:&#8221;Andreano Lanusse&#8221;,&#8221;FAge&#8221;:32,&#8221;FMaritalStatus&#8221;:&#8221;msMarried&#8221;}}<\/p>\n<p>No caso to TJSONObject foi utilizado o m\u00e9todo ToString o qual retorna a representa\u00e7\u00e3o do objeto em formato JSON, atrav\u00e9s da classe TJSONUnMarshal convertermos para TCustomer, esta convers\u00e3o foi tratada no <a href=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-objetos\/\"><strong>posto anterior<\/strong><\/a>.<\/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 e Delphi 2010 o qual iniciei escrevendo sobre a transfer\u00eancia de um simples objeto, e depois sobre o envio de array objetos, agora vamos descrever como enviar array que contenha tipos distintos. Para retornar tipos String, Integer, Double, Real, Boolean e outros tipos, utilizamos a classe [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"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,29],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>DataSnap enviando e recebendo ARRAY de strings, numbers e outros tipos | Andreano Lanusse Blog<\/title>\n<meta name=\"description\" content=\"Neste artigo Andreano Lanusse explica como transferir arrays que contenha diversos tipos de dados utilizando DataSnap e Delphi 2010\" \/>\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-strings-numbers-e-outros-tipos\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DataSnap enviando e recebendo ARRAY de strings, numbers e outros tipos | Andreano Lanusse Blog\" \/>\n<meta property=\"og:description\" content=\"Neste artigo Andreano Lanusse explica como transferir arrays que contenha diversos tipos de dados utilizando DataSnap e Delphi 2010\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2009-10-10T23:37:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-05T06:56:54+00:00\" \/>\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=\"2 minutos\">\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\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/\",\"name\":\"DataSnap enviando e recebendo ARRAY de strings, numbers e outros tipos | Andreano Lanusse Blog\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"datePublished\":\"2009-10-10T23:37:40+00:00\",\"dateModified\":\"2013-05-05T06:56:54+00:00\",\"description\":\"Neste artigo Andreano Lanusse explica como transferir arrays que contenha diversos tipos de dados utilizando DataSnap e Delphi 2010\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#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-strings-numbers-e-outros-tipos\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"DataSnap 2010 \\u2013 enviando e recebendo ARRAY de strings, numbers e outros tipos\",\"datePublished\":\"2009-10-10T23:37:40+00:00\",\"dateModified\":\"2013-05-05T06:56:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#webpage\"},\"commentCount\":2,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"keywords\":[\"DataSnap\",\"Delphi\",\"JSON\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/datasnap-2010-enviando-e-recebendo-array-de-strings-numbers-e-outros-tipos\/#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\/388"}],"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=388"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/388\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=388"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}