iç içe json okuma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
JavaCiva
Üye
Mesajlar: 54
Kayıt: 27 Tem 2014 05:10

iç içe json okuma

Mesaj gönderen JavaCiva »

iMerhabalar

X superobject ile iç içe 2 array ı nasıl okuruz?

Yada başka bir yöntemle de olabilir.

tek katmanlı olduğu zaman okumakta sorun olmuyor fakat iç içe
olduğu zaman tip hataları geliyor

rings arrayını nasıl okur?


Örnek

{
"name": "OBJECTID",
"FieldName": "",
"Type": "Polygon",
"fields": [
{
"name": "GID",
"alias": "GID",
"type": "FieldTypeInteger"
}
],
"features": [
{
"attributes": {
"GID": 32289
},
"geometry": {
"rings": [
[
[
47.213439779999987,
41.039492069999994
],
[
47.213007080000011,
41.039838900000007
]
]
]


}
}
}
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: iç içe json okuma

Mesaj gönderen ertank »

Merhaba,

Verdiğiniz Json geçerli değil. İlk bozulma "geometry": { ile başlıyor. { işareti sonrası değişken adı ve değeri geliyor olmalı idi. Ardından "rings": [ ifadesinden sonra { ile devam etmesi gerekli idi. 47.213... gibi değerlerin bir değişken adı olması gerekli idi.

Geçerli bir Json örnek verebilir iseniz yardımcı olmaya çalışırım.
AhmetNuri
Üye
Mesajlar: 260
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Re: iç içe json okuma

Mesaj gönderen AhmetNuri »

Merhaba

Json daki parantesi hatalarının düzeldiğini varsayarsak 2 yöntem ile yapılabilir

1. yöntem;

var
Obj: TJsonObject;
begin
Obj := TJsonObject.ParseFromFile('json içerikli dosya') as TJsonObject;
try
ShowMessage(Obj['name']);
ShowMessage(IntToStr(Obj['features'].Items[0]['attributes']['GID']));
ShowMessage(Obj['features'].Items[0]['geometry']['rings'].Items[0].Items[0].Items[0].VariantValue);
finally
Obj.Free;
end;
end;



2. yöntem;

var
X: ISuperObject;
Arr:ISuperArray;
begin
X := TSuperObject.ParseFile('json içerikli dosya'');
ShowMessage( X['"name"'].AsString );
ShowMessage( X['features[0].attributes.GID'].AsString );

Arr:=X['features[0].geometry.rings'].AsArray;
Arr:=Arr.A[0];
Arr:=Arr.A[0];
ShowMessage( Arr.V[0] );//1. sayı

Arr:=X['features[0].geometry.rings'].AsArray;
Arr:=Arr.A[0];
Arr:=Arr.A[0];
ShowMessage( Arr.V[1] );//2. sayı

Arr:=X['features[0].geometry.rings'].AsArray;
Arr:=Arr.A[0];
Arr:=Arr.A[1];
ShowMessage( Arr.V[0] );//3. sayı

Arr:=X['features[0].geometry.rings'].AsArray;
Arr:=Arr.A[0];
Arr:=Arr.A[1];
ShowMessage( Arr.V[1] );//4. sayı
end;
Ahmet DENİZ
Cevapla