Работаю с json при помощи fpjson. Как взять значение ключа, если имя ключа содержит точку?
- Код: Выделить всё
- {
 "pp": "8f49ff23",
 "ars": {
 "attach.id": "468"
 }
 }
JSONData.FindPath('attach.id'); будет искать вложенный в attach ключ id
Модератор: Модераторы
{
    "pp": "8f49ff23",
    "ars": {
        "attach.id": "468"
     }
}
lodka писал(а):Работаю с json при помощи fpjson. Как взять значение ключа, если имя ключа содержит точку?
  Found := JsonData.FindPath('ars');
  if (Found <> nil) and (Found.JSONType = jtObject) then
    Found := TJsonObject(Found).Find('attach.id');
  FpJsonFindPath(Root: TJsonData; Path: array of string; out Value: TJsonData): Boolean;
  begin
    ...
  end;
sts писал(а):с годик назад по либе вопросы поднимали на форуме, я посмотрел исходники - там все переписывать надо, что я и сделал для проверки...
iskander писал(а):Только для себя, или это можно где-то увидеть и попробовать?
lodka писал(а): Какие библиотеки используете вы для для работы с json?
lodka писал(а):1. Как вывести имена ключей средствами fpjson?
2. Какие библиотеки используете вы для для работы с json?
program get_obj_keys;
{$mode objfpc}
uses
  SysUtils, FpJson;
var
  e: TJsonEnum;
  I: Integer;
  d: TJsonData;
begin
  d := TJsonObject.Create(['key.1', 100, 'key.2', 200, 'key.3', 300]);
  WriteLn('first way:');
  for e in d do
    WriteLn(e.Key);
  WriteLn('second way:');
  for I := 0 to d.Count - 1 do
    WriteLn(TJsonObject(d).Names[I]);
  d.Free;
end.   
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1