Помощь в коде Json И Delphi

  • Автор темы Автор темы 4eshir
  • Дата начала Дата начала

4eshir

Принятый Кодер
Ofline
прошу прощения если такая тема есть но не нашел но может ли кто по полочкам разьяснить как работать с json из встроенной в rad studio библиотекой ака system.json сломал голову но не могу спарсерить(
 
прошу прощения если такая тема есть но не нашел но может ли кто по полочкам разьяснить как работать с json из встроенной в rad studio библиотекой ака system.json сломал голову но не могу спарсерить(
http://www.webdelphi.ru/2011/10/rabota-s-json-v-delphi-2010-xe2/ Посмотри тут может поможет
 
прошу прощения если такая тема есть но не нашел но может ли кто по полочкам разьяснить как работать с json из встроенной в rad studio библиотекой ака system.json сломал голову но не могу спарсерить(
Вот у нас на форуме почитайте ссылка КЛИК
 
может ли к то помочь все по этой же теме? как вытащить из json определенные строки к примеру есть body : и текст таких боди рандомное количество нужно все в мемо вытащить
 
разобрался как получить одну строку но как вытащить ее отовсюда не смог написать цикл как то проблемно еще(
 
Всё очень легко делается через цикл, если вы новичёк, то вам придётся погоняться с цикла и, если я вам покажу уже новый пример вы не поймёте как это работает и будете продвигаться дальше, потеряя почти самое важную функцию "цыкл", он очень легко учиться и его очень легко понять, у нас на форуме присутствует в разделе для новичков много статей про циклы.
 
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;
 
Memo.Add(FAvlEnum.Current.Value.AsArray.S[cRegionNameID]);
until not FAvlEnum.MoveNext;
 
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
 
Назад
Сверху Снизу