공통 데이터스냅에서 제공하는 JSON 포맷 데이터 사용(분석)하기
2015.07.20 20:15
데이터스냅으로 JSONArray와 JSONObject 두가지 정보를 제공하고 분석해봅니다.
데이터스냅으로 JSON 데이터 제공 시 주의할 점은 반환 값이 "result" 값의 배열로{"result": []} ) 전달됩니다.
{"result":[{"LastName":"Hong","FirstName":"GilDong","Age":"30"}]}
그렇기 때문에 데이터스냅에서 받은 JSON 데이터를 분석(파싱)하려면 result 항목의 배열 값의 첫번째 값(result.[0])을 사용해야 합니다.
JSONArray와 JSONObject 데이터를 사용하는 방법을 알아봅니다.
1, JSONArray
JSONArray는 목록형태의 복수의 데이터를 전달할 수 있습니다.
배열(JSONArray)로 데이터를 전달할 경우 아래와 같이 2차원 배열로 전달됩니다.
function TServerMethods1.MyData: TJSONArray;
var
jRecord,jRecord2: TJSONObject;
I: Integer;
begin
ClientDataSet1.Open;
Result := TJSonArray.Create;
while not ClientDataSet1.EOF do
begin
jRecord := TJSONObject.Create;
for I := 0 to ClientDataSet1.FieldCount - 1 do
jRecord.AddPair( ClientDataSet1.Fields[I].FieldName,TJSONString.Create (ClientDataSet1.Fields[I].AsString));
Result.AddElement(jRecord);
ClientDataSet1.Next;
end;
end;
데이터스냅 서버에서는 위의 코드로 데이터를 제공했습니다.
RESTDebugger(Tools > REST Debugger)로 분석합니다.
1, Request.URL : http://localhost:8080/datasnap/rest/TServerMethods1
2, Parameters.Resource : MyData
3, [Send Request] 클릭
위 과정을 거치면 {"result": [[{"EMP_NO":"2", .... 와 같은 데이터를 받습니다.
수신받은 데이터는 result 값이 배열안에 배열(2중배열)로 처리되어 있습니다.
Tabular Data(표형식의 데이터)로 사용하려면 결과값이 배열이어야 하기때문에 JSON Root Element에 result.[0] 입력 후 [Apply] 버튼을 누릅니다.
2, JSONObject
function TServerMethods1.GetName:TJSONObject;
var
jRecord: TJSONObject;
begin
jRecord := TJSONObject.Create;
result := jRecord;
result.AddPair('LastName','Hong');
result.AddPair('FirstName','GilDong');
result.AddPair('Age','30');
end;
위와 같이 이름정보를 JSONObject로 전달할 수 있습니다.
그리고 클라이언트에서는 아래 코드로 JSONObject정보를 분석해 사용할 수 있습니다.
procedure TForm1.Button1Click(Sender: TObject);
var
LastName, FirstName, Age: string;
begin
RESTClient1.BaseURL := 'http://localhost:8080/datasnap/rest/TServerMethods1';
RESTRequest1.Resource := 'GetName';
RESTRequest1.Execute;
RESTResponse1.RootElement := 'result.[0]';
RESTResponse1.JSONValue.TryGetValue<string>('LastName', LastName);
RESTResponse1.JSONValue.TryGetValue<string>('FirstName', FirstName);
RESTResponse1.JSONValue.TryGetValue<string>('Age', Age);
ShowMessage(LastName + ' ' + FirstName + ' ' + Age);
end;
댓글 1
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) | 관리자 | 2021.01.19 | 24157 |
공지 | [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) | 관리자 | 2020.11.16 | 22464 |
공지 | [10.4 시드니] What's NEW! 신기능 자세히 보기 | 관리자 | 2020.05.27 | 24500 |
공지 | RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 | 관리자 | 2018.10.23 | 30349 |
공지 | [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] | 관리자 | 2017.02.06 | 31482 |
공지 | [전체 목록] 이 달의 기술자료 & 기술레터 | 관리자 | 2017.02.06 | 26822 |
공지 | RAD스튜디오(델파이, C++빌더) - 시작하기 [1] | 관리자 | 2015.06.30 | 47822 |
공지 | RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) | 험프리 | 2014.01.16 | 184770 |
» | 데이터스냅에서 제공하는 JSON 포맷 데이터 사용(분석)하기 [1] | Humphery | 2015.07.20 | 3934 |
1 | MidaConverter로 VCL 프로젝트를 FMX 프로젝트로 변환할 수 있습니다. | Humphery | 2015.06.04 | 762 |
잘 정리된 내용 감사합니다.
도움이 되었습니다.