Работаю с 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.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7