uLkJSON либо встроенным System.JSON
из JSON
Код:
{"data":[[0.01,0.02],[0.03,0.4],[0.05,0.06]]}
как с такого кода получить 0,01 и 0,02 в разные переменные
пробывал так
Код:
procedure TForm1.btn8Click(Sender: TObject);
var
js: TlkJSONobject;
jl: TlkJSONlist;
i: integer;
begin
js := TlkJSON.ParseText(mmo1.Text) as TlkJSONobject;
jl := js.Field['data'] as TlkJSONlist;
// mmo3.Lines.Add(vartostr(jl.Field['data'].Field['0.01'].Value));
// mmo3.Lines.Add(vartostr(jl.Child[0].Value));
for i := 0 to jl.Count do
begin
//mmo3.Lines.Add(vartostr(jl.Child[i].Field['0.01'].Value));
//mmo3.Lines.Add(vartostr(jl.Child[i].Field['0.01'].Value));
//mmo3.Lines.Add(vartostr(jl.Child[i]));
//mmo3.Lines.Add(vartostr(jl.Child[i].Value));
//mmo3.Lines.Add(vartostr(jl.Child[i].Field['0.01'].Value));
end;
js.Free;
end;
Для того чтобы достать элемент массива, нужно обратиться к ключу "data":
Вот пример
Код:
// Это пример с использованием стандартной библиотеки Delphi прежде нужно подключить в uses System.Json
procedure TForm1.Button1Click(Sender: TObject);
var
JsonObject: TJSONObject;
JsonArray: TJSONArray;
begin
JsonObject := TJSONObject.ParseJSONValue( '{"data":[[0.01,0.02],[0.03,0.4],[0.05,0.06]]}') as TJSONObject;
JsonArray:= JsonObject.GetValue('data') as TJSONArray;
ShowMessage(FloatToStr(((JsonArray.Items[0] as TJSONArray).Items[0] as TJSONNumber).AsDouble));
ShowMessage(FloatToStr(((JsonArray.Items[0] as TJSONArray).Items[1] as TJSONNumber).AsDouble));
JsonObject.Destroy;
end;
Если в массиве находится еще один массив, тогда мы обращаемся еще раз к методу Items
Код:
(JsonArray.Items[0] as TJSONArray).Items[0] as TJSONNumbe
Самый главный массив, в котором лежат другие массивы, мы говорим что он "как массив" тоесть "as TJSONArray"
затем мы берем в круглые скобки и обращаемся еще раз к методу Items и это уже мы обращаемся к массивам в массиве ).Items[Index]
А в этих массивах у нас вещественные числа, и мы говорим что они "как число" тоесть "as TJSONNumber" затем мы берем в круглые скобки и,
указываем на то какой мы возвращаем тип в переменную ).AsDouble