[Delphi Seattle] - Como efetuar leitura de arrays em JSON
Boa tarde galera!
Sou novo nessa questão de JSon, tenho a seguinte estrutura:
Preciso pegar todos os itens dentro de "ATIVIDADES_SECUNDARIAS" e listar em um TListBox, lembrando que a quantidade de itens é dinâmica.
Alguém pode me fornecer um exemplo? Andei procurando mas não to tendo muito sucesso rs.
Obrigado desde já ;)
Sou novo nessa questão de JSon, tenho a seguinte estrutura:
{ "INSCRICAO": "09.999.999/0009-99", "TIPO": "MATRIZ", "ABERTURA": "06/02/2003", "RAZAO": "EMPRESA PRIVADA LTDA.", "FANTASIA": "*******", "ATIVIDADE_CODIGO": "47.13-0-02", "ATIVIDADE_DESCRICAO": "Lojas de variedades, exceto lojas de departamentos ou magazines", "ATIVIDADES_SECUNDARIAS":[ {"ATIVIDADE": "47.51-2-01 - Comércio varejista especializado de equipamentos e suprimentos de informática"}, {"ATIVIDADE": "47.72-5-00 - Comércio varejista de cosméticos, produtos de perfumaria e de higiene pessoal"}, {"ATIVIDADE": "47.56-3-00 - Comércio varejista especializado de instrumentos musicais e acessórios"}, {"ATIVIDADE": "45.30-7-03 - Comércio a varejo de peças e acessórios novos para veículos automotores"}, {"ATIVIDADE": "47.52-1-00 - Comércio varejista especializado de equipamentos de telefonia e comunicação"}, {"ATIVIDADE": "47.53-9-00 - Comércio varejista especializado de eletrodomésticos e equipamentos de áudio e vídeo"}, {"ATIVIDADE": "47.63-6-01 - Comércio varejista de brinquedos e artigos recreativos"}, {"ATIVIDADE": "47.63-6-02 - Comércio varejista de artigos esportivos"}, {"ATIVIDADE": "47.57-1-00 - Comércio varejista especializado de peças e acessórios para aparelhos eletroeletrônicos para uso doméstico, exceto informática e comunicação"}, {"ATIVIDADE": "59.11-1-99 - Atividades de produção cinematográfica, de vídeos e de programas de televisão não especificadas anteriormente"}, {"ATIVIDADE": "73.11-4-00 - Agências de publicidade"}, {"ATIVIDADE": "47.89-0-04 - Comércio varejista de animais vivos e de artigos e alimentos para animais de estimação"}, {"ATIVIDADE": "47.11-3-02 - Comércio varejista de mercadorias em geral, com predominância de produtos alimentícios - supermercados"} ] }
Preciso pegar todos os itens dentro de "ATIVIDADES_SECUNDARIAS" e listar em um TListBox, lembrando que a quantidade de itens é dinâmica.
Alguém pode me fornecer um exemplo? Andei procurando mas não to tendo muito sucesso rs.
Obrigado desde já ;)
Mateus Ribeiro
Curtidas 2
Melhor post
Natanael Ferreira
19/07/2017
Adicione um Listbox e um Memo.
Insira o conteúdo do Json no Memo.
Teste o código abaixo, no OnClick de um botão:
Insira o conteúdo do Json no Memo.
Teste o código abaixo, no OnClick de um botão:
var jsonObj, jSubObj: TJSONObject; ja: TJSONArray; jv: TJSONValue; i: Integer; begin jsonObj := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(Memo1.Text), 0) as TJSONObject; jv := jsonObj.Get('ATIVIDADES_SECUNDARIAS').JsonValue; ja := jv as TJSONArray; ListBox1.Clear; for i := 0 to ja.Size - 1 do begin jSubObj := (ja.Get(i) as TJSONObject); jv := jSubObj.Get(0).JsonValue; ListBox1.Items.Add(jv.Value); end; end;
GOSTEI 4
Mais Respostas
Mateus Ribeiro
19/07/2017
Natanael Ferreira!
Muito obrigado. Deu certinho, o negocio é bem simples e não consegui achar "googleando" kkkk
Obrigadão mesmo, abraço!
Muito obrigado. Deu certinho, o negocio é bem simples e não consegui achar "googleando" kkkk
Obrigadão mesmo, abraço!
GOSTEI 0
Fábio Sobral
19/07/2017
Deu certo esse código ai ! Obrigado
GOSTEI 0
Marcelino Pinheiro
19/07/2017
Alguém sabe o por quê do Delphi não aceitar este JSON do exemplo? Quando rodo o Parse para carrega-lo a variável fica NIL, como se o JSON fosse inválido. Tive que colocar um label (Adicionei ) no início e fechei com "" aí a variável jsonObj ficou com o valor correto...
{"pedidos": [
]}
GOSTEI 0
Paulo Abrantes
19/07/2017
ola pessoal, se alguem puder me ajudar em uma duvida parecida:
{
"html_attributions" : [],
"results" : [
{
"formatted_address" : "R. Colombia, 2384 - Centro, Votuporanga - SP, 15501-150, Brasil",
"geometry" : {
"location" : {
"lat" : -20.8175674,
"lng" : -48.998183799999
},
"viewport" : {
"northeast" : {
"lat" :-20.817567462010727,
"lng" : -48.38384822010727
},
"southwest" : {
"lat" : -20.71813962010727,
"lng" : -48.38384822010727
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
"id" : "dw948h7e66ed44e7ef4063489053534482342929",
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
preciso pegar o resultado dos campos "geometry" > "location" > "lat" e "lng" desse json no delphi. Nao estou conseguindo pois location nao é um array, entao estou apanhando aqui.
{
"html_attributions" : [],
"results" : [
{
"formatted_address" : "R. Colombia, 2384 - Centro, Votuporanga - SP, 15501-150, Brasil",
"geometry" : {
"location" : {
"lat" : -20.8175674,
"lng" : -48.998183799999
},
"viewport" : {
"northeast" : {
"lat" :-20.817567462010727,
"lng" : -48.38384822010727
},
"southwest" : {
"lat" : -20.71813962010727,
"lng" : -48.38384822010727
}
}
},
"icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
"id" : "dw948h7e66ed44e7ef4063489053534482342929",
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
preciso pegar o resultado dos campos "geometry" > "location" > "lat" e "lng" desse json no delphi. Nao estou conseguindo pois location nao é um array, entao estou apanhando aqui.
GOSTEI 0
Thiago Amaral
19/07/2017
boa tarde, tenho essa rotina e gostaria de colocar o cnae junto alguem pode me ajudar?
a consulta do cnae vem assim no
"atividade_principal": [ {"code": "47.51-2-01", "text": "Comércio varejista especializado de equipamentos e suprimentos de informática" } ],
como que eu faço a variável para pegar somente o code?
procedure TDMRotinas.BuscaCNPJ(CNPJ: String);
var
jsonObject: TJsonObject;
begin
RESTRequestCNPJ.Resource := CNPJ;
RESTRequestCNPJ.Execute;
jsonObject := TJsonObject.ParseJSONValue(RESTResponseCNPJ.Content)
as TJsonObject;
Pessoa.razao := jsonObject.GetValue('nome').Value;
Pessoa.fantasia := jsonObject.GetValue('fantasia').Value;
Pessoa.logradouro := jsonObject.GetValue('logradouro').Value;
Pessoa.numero := jsonObject.GetValue('numero').Value;
Pessoa.bairro := jsonObject.GetValue('bairro').Value;
Pessoa.municipio := jsonObject.GetValue('municipio').Value;
Pessoa.uf := jsonObject.GetValue('uf').Value;
Pessoa.cep := jsonObject.GetValue('cep').Value;
Pessoa.email := jsonObject.GetValue('email').Value;
Pessoa.complemento := jsonObject.GetValue('complemento').Value;
Pessoa.telefone := jsonObject.GetValue('telefone').Value;
a consulta do cnae vem assim no
"atividade_principal": [ {"code": "47.51-2-01", "text": "Comércio varejista especializado de equipamentos e suprimentos de informática" } ],
como que eu faço a variável para pegar somente o code?
procedure TDMRotinas.BuscaCNPJ(CNPJ: String);
var
jsonObject: TJsonObject;
begin
RESTRequestCNPJ.Resource := CNPJ;
RESTRequestCNPJ.Execute;
jsonObject := TJsonObject.ParseJSONValue(RESTResponseCNPJ.Content)
as TJsonObject;
Pessoa.razao := jsonObject.GetValue('nome').Value;
Pessoa.fantasia := jsonObject.GetValue('fantasia').Value;
Pessoa.logradouro := jsonObject.GetValue('logradouro').Value;
Pessoa.numero := jsonObject.GetValue('numero').Value;
Pessoa.bairro := jsonObject.GetValue('bairro').Value;
Pessoa.municipio := jsonObject.GetValue('municipio').Value;
Pessoa.uf := jsonObject.GetValue('uf').Value;
Pessoa.cep := jsonObject.GetValue('cep').Value;
Pessoa.email := jsonObject.GetValue('email').Value;
Pessoa.complemento := jsonObject.GetValue('complemento').Value;
Pessoa.telefone := jsonObject.GetValue('telefone').Value;
GOSTEI 0