Ajuda Com Json
24/07/2023
0
Estou com uma dificuldade enorme com esse JSON
'{"equipamento":2,
"equipe":10,
"unidade_Industrial":4,
"hora_Final":0.630520833333333,
"hora_Inicial":0.672488425925926,
"horimetro_Final":0,
"horimetro_Inicial":0,
"data":"2023-07-24T00:00:00.000Z",
"observacoes":"",
"data_Final":"2023-07-20T00:00:00.000Z",
"data_Inicial":"2023-07-20T00:00:00.000Z",
"status_Envio":"PENDENTE",
"codigo_TB_Equipes_Atividades":4,
"diesel":0,
"descricao_Foto2":"",
"descricao_Foto1":"",
"codigo_TB_Configuracoes":1,
"protocolo":"2023-07-24 21:44:44",
"lista_ItemsCheckList":{"lista_Item_CheckList":{"ownsObjects":true,"listHelper":[
{"descricao":"Água motor (ºC)","codigo":1,"status":"cf","observacao":"","codigo_TB_Item":7},
{"descricao":"Alarme de Ré","codigo":2,"status":"cf","observacao":"","codigo_TB_Item":8},
{"descricao":"Buzina","codigo":3,"status":"cf","observacao":"","codigo_TB_Item":9},
{"descricao":"Caçamba levantada (Alerta)","codigo":4,"status":"na","observacao":"","codigo_TB_Item":10},
{"descricao":"Câmera de ré","codigo":5,"status":"na","observacao":"","codigo_TB_Item":11},
{"descricao":"Cinto de segurança","codigo":6,"status":"na","observacao":"","codigo_TB_Item":12},
{"descricao":"Comandos Hidráulicos","codigo":7,"status":"na","observacao":"","codigo_TB_Item":13},
{"descricao":"Consumo de combustível","codigo":8,"status":"na","observacao":"","codigo_TB_Item":14},
{"descricao":"Consumo de óleos","codigo":9,"status":"na","observacao":"","codigo_TB_Item":15},
{"descricao":"Correias","codigo":10,"status":"na","observacao":"","codigo_TB_Item":16},
{"descricao":"Direção","codigo":11,"status":"na","observacao":"","codigo_TB_Item":17},
{"descricao":"Esteiras","codigo":12,"status":"na","observacao":"","codigo_TB_Item":18},
{"descricao":"Extintor","codigo":13,"status":"na","observacao":"","codigo_TB_Item":19},
{"descricao":"Farol alto","codigo":14,"status":"na","observacao":"","codigo_TB_Item":20},
{"descricao":"Farol baixo","codigo":15,"status":"na","observacao":"","codigo_TB_Item":21},
{"descricao":"Filtro Seco (Ar)","codigo":16,"status":"na","observacao":"","codigo_TB_Item":22},
{"descricao":"Filtro Úmido (Óleo)","codigo":17,"status":"na","observacao":"","codigo_TB_Item":23},
{"descricao":"Freio de Emergência","codigo":18,"status":"na","observacao":"","codigo_TB_Item":24},
{"descricao":"Freio de mão","codigo":19,"status":"na","observacao":"","codigo_TB_Item":25},
{"descricao":"Freio de pé","codigo":20,"status":"na","observacao":"","codigo_TB_Item":26},
{"descricao":"Freio motor","codigo":21,"status":"na","observacao":"","codigo_TB_Item":27},
{"descricao":"Giroflex","codigo":22,"status":"na","observacao":"","codigo_TB_Item":28},
{"descricao":"Lâmina\/Bordas","codigo":23,"status":"na","observacao":"","codigo_TB_Item":29},
{"descricao":"Limpador de Para-brisa","codigo":24,"status":"na","observacao":"","codigo_TB_Item":30},
{"descricao":"Limpeza","codigo":25,"status":"na","observacao":"","codigo_TB_Item":31},
{"descricao":"Luz de Freio","codigo":26,"status":"na","observacao":"","codigo_TB_Item":32},
{"descricao":"Luz de ré","codigo":27,"status":"na","observacao":"","codigo_TB_Item":33},
{"descricao":"Óleo Transmissão (ºC)","codigo":28,"status":"na","observacao":"","codigo_TB_Item":34},
{"descricao":"Painel Instrumentos","codigo":29,"status":"na","observacao":"","codigo_TB_Item":35},
{"descricao":"Pneus","codigo":30,"status":"na","observacao":"","codigo_TB_Item":36},
{"descricao":"Pressão Óleo","codigo":31,"status":"na","observacao":"","codigo_TB_Item":37},
{"descricao":"Retrovisores","codigo":32,"status":"na","observacao":"","codigo_TB_Item":38},
{"descricao":"Roletes","codigo":33,"status":"na","observacao":"","codigo_TB_Item":39},
{"descricao":"Ruídos","codigo":34,"status":"na","observacao":"","codigo_TB_Item":40},
{"descricao":"Sensor de Proximidade","codigo":35,"status":"na","observacao":"","codigo_TB_Item":41},
{"descricao":"Setas","codigo":36,"status":"na","observacao":"","codigo_TB_Item":42},
{"descricao":"Strobo","codigo":37,"status":"na","observacao":"","codigo_TB_Item":43},
{"descricao":"Vazamentos","codigo":38,"status":"na","observacao":"","codigo_TB_Item":44},
{"descricao":"Vidros","codigo":39,"status":"na","observacao":"","codigo_TB_Item":45},
{"descricao":"Outros","codigo":40,"status":"na","observacao":"","codigo_TB_Item":46}
]}}}'
Quando tento transformar ele em array ele da um erro de cast (raised exception class EInvalidCast with message 'Invalid class typecast'.)
Quando dou um jv.tostring ele retorna todos os dados contidos em lista_ItemsCheckList.
function TDAOPDE.Salvar(LJsonRecebido: TJSONObject): TJSONObject;
var
qryConsulta_PDE : TMyQuery;
ProtocoLo : String;
ja: TJSONArray;
jv: TJSONValue;
begin
try
ProtocoLo := LJsonRecebido.GetValue<String>('protocolo');
try
jv := LJsonRecebido.Get('lista_ItemsCheckList').JsonValue;
ja := jv.TJSONParseOption as TJSONArray;
Alguém já passou por isso?
Marcelo Campagnaro
Posts
25/07/2023
Frank Hosaka
$teste='{"chave":"valor"}';
$array=json_decode($teste,true);
e ele retorna $array=["chave"=>"valor"]
O seu json é válido. Eu dei o nome de $teste para a string. No PHP, usei esse código:
$teste= // o json que você passou //;
$jteste=json_decode($teste);
$array_parcial=$jteste->lista_ItemsCheckList->lista_Item_CheckList->listHelper;
var_dump($array_parcial);
$array_global=json_decode($teste,true);
print_r($array_global);
Já o código Delphi que você passou, fiquei intrigado com a instrução
try
jv := LJsonRecebido.Get('lista_ItemsCheckList').JsonValue;
ja := jv.TJSONParseOption as TJSONArray;
estava imaginando assim .Get('listHelper') ou simplesmente nada assim .Get( )
25/07/2023
Natanael Ferreira
Seu código acessa o primeiro nível que é o primeiro "lista_ItemsCheckList" depois dele tem outro nível que é o "lista_ItemsCheckList" e depois que tem o array "listHelper".
Veja os níveis do seu Array:
.... "lista_ItemsCheckList": { "lista_Item_CheckList": { "ownsObjects": true, "listHelper": [{ "descricao": "Água motor (ºC)", "codigo": 1, "status": "cf", "observacao": "", "codigo_TB_Item": 7 }, .....
25/07/2023
Natanael Ferreira
Seu código acessa o primeiro nível que é o primeiro "lista_ItemsCheckList" depois dele tem outro nível que é o "lista_ItemsCheckList" e depois que tem o array "listHelper".
Veja os níveis do seu Array:
... "lista_ItemsCheckList": { "lista_Item_CheckList": { "ownsObjects": true, "listHelper": [{ "descricao": "Água motor (ºC)", "codigo": 1, "status": "cf", "observacao": "", "codigo_TB_Item": 7 }, .....
25/07/2023
Natanael Ferreira
Seu código acessa o primeiro nível que é o primeiro "lista_ItemsCheckList" depois dele tem outro nível que é o "lista_ItemsCheckList" e depois que tem o array "listHelper".
Veja os níveis do seu Array:
"lista_ItemsCheckList": { "lista_Item_CheckList": { "ownsObjects": true, "listHelper": [{ "descricao": "Água motor (ºC)", "codigo": 1, "status": "cf", "observacao": "", "codigo_TB_Item": 7 },
25/07/2023
Arthur Heinrich
ja := jv.TJSONParseOption as TJSONArray;
Voçê está tentando fazer um cast (mudança de datatype) entre a propriedade TJSONParseOption para a classe TJSONArray.
Segundo a documentação, o tipo da propriedade TJSONParseOption é uma enumeração: TJSONParseOption = (IsUTF8, UseBool, RaiseExc);
Logo, o cast que você propõe não funciona. Este datatype equivale a um inteiro, que pode assumir os valores 0, 1 e 2. Não dá para transformar isso em um array, muito menos em uma classe.
Clique aqui para fazer login e interagir na Comunidade :)