[Delphi Seattle] - Como efetuar leitura de arrays em JSON

19/07/2017

0

Boa tarde galera!

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

Mateus Ribeiro

Responder

Post mais votado

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:

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;

Natanael Ferreira

Natanael Ferreira
Responder

Mais Posts

19/07/2017

Mateus Ribeiro

Natanael Ferreira!

Muito obrigado. Deu certinho, o negocio é bem simples e não consegui achar "googleando" kkkk
Obrigadão mesmo, abraço!
Responder

23/03/2018

Fábio Sobral

Deu certo esse código ai ! Obrigado
Responder

18/12/2018

Marcelino Pinheiro

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
{"pedidos": [
) no início e fechei com "
]}
" aí a variável jsonObj ficou com o valor correto...
Responder

01/04/2019

Paulo Abrantes

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.
Responder

09/05/2023

Thiago Amaral

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;
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar