وب سرور با دلفی و خروجی Json برای پلتفرمهایی مانند اندروید
سلام.
در حال طراحی وب سروری بودم که چون برای کلاینتش که اندروید بود ، مجبور بودم از فرمت Json استفاده کنم ، هر چی نتو زیرو رو کردم، چیز به درد بخوری پیدا نکردم.
البته بودند کامپوننت و ابزارهایی برای اینکار. که بیشترشون از دلفی های نسخه های بالا پشتیبانی میکردند و به درد من نمیخورد.
اومدمو برا خودم یه کد با حال زدم و خروجی کوئریم رو در قالب جیسون(مزحک) در اوردم.
البته کارم عجله ایه و این کد کارمو راه انداخت. ایشالا دست حاج یوسف خلوت شد ، کمکم میکنه و تبدیلش میکنیم به کامپوننت که مستقیم به دیتا ست وصل بشه و حالشو ببریم.
البته بگم، نیایید بگید فلان کامپوننت و فلان روش بودا:عصبانی++:. میدونم عزیزان:قلب:. حال کردم خودم طراحی کنم:چشمک:
برنامه رو میتونید از این لینک بگیرید.
رمزشم هست:
123321Mask
البته اینم بگم که روشی که بنده در این سمپل استفاده کردم ،روشی هست که دست برنامه نویس بازه و حتی میتونه از بیرون بهش مقدار پاس بده.یعنی فیلدهایی که نیازه که ازشون گزارش به فرمت جیسون گرفته بشه، رو میتونید بصورت استرینگ از بیرون برنامه لود کنید.
کد زیر هم روی نسخه دلفی من جواب داد. اما من محدودیت هایی از لحاظ داینامیک بودن، رو درش دیدم که بیخیالش شدم و خودم مجدد چرخ رو به روش خودم اختراع کردم:لبخند:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBXJSON, DBXJSONReflect;
type
TPerson = class(TObject)
public
Name: String;
Password: String;
Age: Integer;
end;
type
TForm1 = class(TForm)
Button1: TButton;
Memo2: TMemo;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
function ObjectToJSON(AData: TObject): TJSONValue;
function JSONToObject(AJSONValue: TJSONValue): TObject;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
lPerson: TPerson;
lJSONValue: TJSONValue;
begin
Memo2.Lines.Clear;
lPerson := TPerson.Create;
lPerson.Name := 'Hezihang';
lPerson.Password := '123';
lPerson.Age := 23;
lJSONValue := ObjectToJSON(lPerson);
FreeAndNil(lPerson);
Memo2.Lines.Add(lJSONValue.ToString);
lJSONValue.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
lPerson: TPerson;
lJSONValue: TJSONValue;
begin
Memo1.Clear;
lJSONValue := TJSONObject.ParseJSONValue(Memo2.Text);
lPerson := JSONToObject(lJSONValue) as TPerson;
lJSONValue.Free;
Memo1.Lines.Add('Name: ' + lPerson.Name);
Memo1.Lines.Add('Password: ' + lPerson.Password);
Memo1.Lines.Add('Age: ' + IntToStr(lPerson.Age));
lPerson.Free;
end;
function TForm1.JSONToObject(AJSONValue: TJSONValue): TObject;
var
lUnMarshal: TJSONUnMarshal;
begin
lUnMarshal := TJSONUnMarshal.Create();
try
Result := lUnMarshal.Unmarshal(AJSONValue);
finally
FreeAndNil(lUnMarshal);
end;
end;
function TForm1.ObjectToJSON(AData: TObject): TJSONValue;
var
lMarshal: TJSONMarshal;
begin
lMarshal := TJSONMarshal.Create();
try
Result := lMarshal.Marshal(AData);
finally
FreeAndNil(lMarshal);
end;
end;
end.
نقل قول: وب سرور با دلفی و خروجی Json برای پلتفرمهایی مانند اندروید
ببخشید میتونید یکم در مورد کاربرد جیسون توضیح بدید ؟
تو دلفی برای خروجی اندروید چه کاربردی داره ؟
نقل قول: وب سرور با دلفی و خروجی Json برای پلتفرمهایی مانند اندروید
نقل قول:
نوشته شده توسط
rooterror
ببخشید میتونید یکم در مورد کاربرد جیسون توضیح بدید ؟
تو دلفی برای خروجی اندروید چه کاربردی داره ؟
یه جستجوی ساده جوابهای خوبی بر میگردونه.
http://www.dotech.ir/ShowNews/28/Jso...8C%D8%B3%D8%AA
http://amib.ir/weblog/?p=532
http://rasekhoon.net/forum/thread/33317/page1/
نقل قول: وب سرور با دلفی و خروجی Json برای پلتفرمهایی مانند اندروید
با سلام
یه سوال داشتم، شما این خروجی Json رو با چه ابزاری در Android صدا می زنین؟
من با روشی Proxy که خود Delphi Ex4 برای سرور DataSnap جهت MobileConnection میده تست کردم ولی هنوز موفق نشدم، می خواستم بدونم شما از چه روشی استفاده کردین؟
آیا سرورتون Http بود یا TCP ؟
با تشکر
نقل قول: وب سرور با دلفی و خروجی Json برای پلتفرمهایی مانند اندروید
نقل قول:
یه سوال داشتم، شما این خروجی Json رو با چه ابزاری در Android صدا می زنین؟
در جاوا شما با گرفتن ارایه ای از JsonObject میتونید مقدار خروجی این وب سرویس رو نمایش بدید
نقل قول:
من با روشی Proxy که خود Delphi Ex4 برای سرور DataSnap جهت MobileConnection میده تست کردم ولی هنوز موفق نشدم، می خواستم بدونم شما از چه روشی استفاده کردین؟-
استفاده از روشهایی که در سمپلهای موجود وجود داره برای نسخه های بالای 4 مشکل داره و کاملا غیر منطقی و غیر اصولی است.
نقل قول:
آیا سرورتون Http بود یا TCP ؟
به راحتی با یک HTTPServer میتونید یک وب سرور طراحی و با متد Post مقدار ارسال و در یک HTTPClient خروجی مورد نظر با فرمت جیسون رو دریافت کنید.