Aşağıdaki gibi bir objectim var.
Kod: Tümünü seç
unit MyResponseModel;
interface
type
TMyResponse = class
private
FStatus: integer;
FSorguNo: string;
FStatusMessage: string;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property Status: Integer read FStatus write
FStatus;
property SorguNo: string read FSorguNo write
FSorguNo;
property StatusMessage: string read FStatusMessage write
FStatusMessage;
constructor Create();
destructor Destroy(); override;
published
{ published declarations }
end;
implementation
{ TRequest }
constructor TMyResponse.Create();
begin
inherited Create;
end;
destructor TMyResponse.Destroy;
begin
inherited Destroy;
end;
end.
Örnek olarak şöyle de bir array object içeren JSON dosyam var.
Kod: Tümünü seç
[
{
"Status": 0,
"StatusMessage": "Status Message 0",
"SorguNo": "Sorgu No 0"
},
{
"Status": 1,
"StatusMessage": "Status Message 1",
"SorguNo": "Sorgu No 1"
},
{
"Status": 2,
"StatusMessage": "Status Message 2",
"SorguNo": "Sorgu No 2"
}
]
C# ta NewtonSoft kutuphanesini kullanarak yazdığım Json dosyalarını deserailize eden bir dllim var.
Bu dll de kullandığım methodum aşağıda.
Kod: Tümünü seç
public MyResponse[] DeSerializeFromJsonFileToObjectArray(string fileName)
{
string jsonString = File.ReadAllText(fileName);
try
{
var model = JsonConvert.DeserializeObject<MyResponse[]>(jsonString);
return model;
}
catch (Exception)
{
throw;
}
}
Doğal olarak typeLibraryde bu metod aşağıdaki şekle dönüştü.
Kod: Tümünü seç
function TIndemSoftJsonHelper.DeSerializeFromJsonFileToObjectArray(const fileName: WideString): PSafeArray;
begin
Result := DefaultInterface.DeSerializeFromJsonFileToObjectArray(fileName);
end;
Doğal olarak tam tip olarak dönüş vermiyro.Bu konuya yeni girdim.İmport ederken methoddan geriye array of _MyResponse tipinde birşeyler döneceğini beklemiştim.
Ancak şimdi anlıyorum ki PSafeArray olarak dönmesi son derece normal.
Ben tlb dosyasındaki metodumu çağırıyorum aşağıdaki gibi
Kod: Tümünü seç
var
myArray: PSafeArray;
responsearray: array of _MyResponse;
begin
myArray := MyDll.DeSerializeFromJsonFileToObjectArray('C:\Users\Asus\Desktop\Temp\deneme.json');
//Yukarıda örnek olarak verdiğim josn dosyası
Fonksiyon bana PsafeArray tipinde donus verdi.myarray isimli değişkenime aldım.
Ama şimdi bunları okumma lazım ve bunun içinde propertyleri bilinen _MyResponse veya MyResponse tipinde bir değişkene cast etmeliyim.
Ama nasıl?
Çok araştırdım ama bulamadım.
Bilgisi olan arkadaşlar yardımcı olursa çok makbule geçecek.
Şimdiden teşekkürler.....