데이터스냅으로 JSONArray와 JSONObject 두가지 정보를 제공하고 분석해봅니다.

 

데이터스냅으로 JSON 데이터 제공 시 주의할 점은 반환 값이 "result" 값의 배열로{"result": []} ) 전달됩니다.

 

{"result":[{"LastName":"Hong","FirstName":"GilDong","Age":"30"}]}

 

그렇기 때문에 데이터스냅에서 받은 JSON 데이터를 분석(파싱)하려면 result 항목의 배열 값의 첫번째 값(result.[0])을 사용해야 합니다.

 

 

JSONArray와 JSONObject 데이터를 사용하는 방법을 알아봅니다.

1, JSONArray

JSONArray는 목록형태의 복수의 데이터를 전달할 수 있습니다.

배열(JSONArray)로 데이터를 전달할 경우 아래와 같이 2차원 배열로 전달됩니다.

3c7d55ea6d1d8978dc7372234368adac.jpg

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)로 분석합니다.

rest1.png

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] 버튼을 누릅니다.

rest2.png

 

 

 

 

2, JSONObject

 

fc5591e2c43acd2093357b10f0af5ec0.jpg

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;

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15750
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 14160
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16713
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22277
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23595
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 19112
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39544
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174969
543 1차 공개 중고생 강의용 앱 소스 및 메뉴얼입니다. file 쭈니아빠 2016.07.16 763
542 [고객 사례- POS, 주문, C++빌더, 멀티플랫폼] BCPOS - 클라우드를 연동한 다양한 간편 결제 지원 POS 관리자 2020.08.04 761
541 [고객사례-비콘, 위치 추적, RAD스튜디오, RAD서버] BEAM 관리자 2018.04.18 761
540 [프로그래밍 애피타이저] 7장 데이터베이스 개념과 용어정의 file 김원경 2020.04.09 759
539 [프로그래밍 애피타이저] 5장 메모리의 구조 file 김원경 2020.04.07 758
538 [업데이트][핫픽스][10 시애틀] 모던테마(ModernTheme) 핫픽스 - 10 시애틀 업데이트 1 대상 험프리 2016.01.06 756
537 [RAD서버] JSON 처리 단순화 컴포넌트 활용 - TEMSDataSetResource 험프리 2019.09.27 755
536 RAD 서버 완벽 가이드 - 200페이지 분량의 전자책 file 험프리 2020.02.07 752
535 [고객사례-원격연동, 모바일, 윈도우] Alpemix - 모바일과 PC 원격 연동 프로그램 관리자 2017.08.24 752
534 이 달의 기술자료 - 2015년 11월 file 험프리 2015.10.30 748
533 IBLite 라이브러리 및 라이선스 배포하기 file 험프리 2017.03.24 747
532 10.2.3 새로운 기능: 파이어몽키 UI 템플릿 - 프로필 화면 관리자 2018.04.24 745
531 N [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 24. 텍스트 파일들 관리자 2019.03.29 741
530 이 달의 기술자료 - 2019년 04월 file 험프리 2019.03.28 739
529 델파이로 3D 크레딧 스크롤 구현하기(소스제공) file 험프리 2018.05.09 739
528 n [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 11. 반복들 관리자 2019.03.29 738
527 3가지 API 이야기: VCL에서 WinAPI, COM&ShellAPI, WinRT 활용하기 관리자 2019.09.18 737
526 [10.2 도쿄][릴리즈2] 기타 10.2.2에서 추가 강화된 내용 file 험프리 2017.12.13 736
525 [10.2 도쿄] 개발환경 개선사항 file 김원경 2017.03.23 735
524 [도서/PDF/소스코드] 델파이 Begin...End - 2장. 폼의 특성과 띄우기 [1] 관리자 2019.08.09 731