데이터스냅으로 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 21903
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 20532
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 22563
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28326
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 29602
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 24942
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 45884
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 181461
36 안드로이드 개발환경 추가 조치방법 - RAD Studio에서 SDK 설정 Humphery 2015.10.01 5658
35 [추가자료] 안드로이드 개발환경 추가 조치방법 - 수동 SDK Tools 업데이트 file Humphery 2015.10.01 3154
34 iOS9의 새로운 기능인 "App transport Security" 예외 허용을 위한 Info.plist xml 수정방법 [1] Humphery 2015.10.01 892
33 이 달의 기술자료 - 2015년 10월 file 험프리 2015.09.25 564
32 델파이 문서화 도구 참고링크 Humphery 2015.09.11 1226
31 [발표자료] 9월 3일 "사물인터넷 실제 구현하기, DeepDive" 관리자 2015.09.04 496
30 이 달의 기술자료 - 2015년 09월 file 험프리 2015.08.26 531
29 20150811 사물인터넷 실제 구현하기 DeepDive 세미나 발표자료 관리자 2015.08.12 592
28 [따라하기] 위험지역 경보 시스템 #1 - 위험지역 진입 경보앱 만들기 [1] Humphery 2015.07.30 3899
27 [사물인터넷 동영상] 위험 지역 경보 시스템 관리자 2015.07.28 584
26 이 달의 기술자료 - 2015년 08월 험프리 2015.07.28 674
» 데이터스냅에서 제공하는 JSON 포맷 데이터 사용(분석)하기 [1] file Humphery 2015.07.20 3869
24 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1604
23 모바일 앱 실행 시 (비정상종료)검은화면이 표시되는 경우 조치방법 험프리 2015.07.03 4649
22 이 달의 기술자료 - 2015년 07월 file 험프리 2015.06.26 1253
21 [하이브리드 앱 개발] 웹페이지에서 델파이 함수 호출하기 Humphery 2015.06.26 4232
20 안드로이드 웹브라우저에서 "tel:, sms:" 링크가 동작하지 않는 이슈 해결하기 Humphery 2015.06.26 4940
19 RAD Studio 사물인터넷 참고자료와 샘플 모음 file Humphery 2015.06.23 2276
18 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 2449
17 이 달의 기술자료 - 2015년 06월 file 험프리 2015.05.28 3553