Hey Allen,
ik ben wat nieuw met het gebruik van JSON in delphi maar ik raak maar niet aan een oplossing voor volgens
mij een redelijk eenvoudige situatie :
Ik krijg via een MQTT server volgende JSON binnen :
Code:
{
"d" : {
"PowerONOFF" : [ true ],
"Fan" : [ 50 ],
"ActualTemp" : [ 176 ],
"ActualHum" : [ 91 ]
}
}
Ik dacht dat ik eenvoudig de waardes ging kunnen uitlezen, maar wat ik ook probeer, ik kom er niet.
Code:
procedure TFormMQTT.DecodeJSON(JSON:string);
var
V: TJsonValue;
O, E, P: TJsonObject;
A: TJsonArray;
I : Integer;
Temp : string;
begin
V := TJSONObject.ParseJSONValue(JSON);
if not Assigned(V) then
memo1.Lines.add('Invalid JSON');
try
memo1.Lines.add('Incoming JSON');
O := V as TJSONObject;
memo1.Lines.Add('O : '+inttostr(O.Count)); -> Klopt , ik krijg '1' te zien, duidend op 1 object onder de "d"
A := O.GetValue<TJsonArray>('d'); -> A blijft leeg?
for I := 0 to A.Count - 1 do
begin
E := A.Items[I] as TJsonObject; // Element
P := E.GetValue<TJsonObject>('ActualTemp');
Memo1.lines.add('Value: ' + P.GetValue<string>('Value') + ' ' + 'Quantity: ' + P.GetValue<string>('Quantity'));
end;
finally
V.Free;
end;
end;
Met deze code krijg ik een valid JSON, maar ik krijg met geen enkele methode de values .. Iemand enig idee wat ik fout doe? Alvast bedankt.
Bookmarks