데이터스냅으로 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 22115
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 20659
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 22701
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28461
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 29722
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25071
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46008
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 181771
38 [10.2 도쿄] 델파이로 리눅스 기반 웹서비스 제작하기(WebBroker 이용) [1] file 험프리 2017.03.30 3997
37 [10.2 도쿄] 리눅스 지원을 제공합니다. file 김원경 2017.03.23 1105
36 이 달의 기술자료 - 2017년 02월 file 험프리 2017.01.31 749
35 CodeRage XI 온라인 컨퍼런스 안내 file 험프리 2016.11.15 364
34 [RAD서버] [웨비나-딥다이브] 매장 관리 솔루션 개발하기(개발 시나리오와 데모) file 험프리 2016.11.02 1402
33 델파이/C++빌더 개발자를 위한 최고의 미들웨어 서버 - RAD 서버 file 험프리 2016.11.02 1886
32 이 달의 기술자료 - 2016년 11월 험프리 2016.10.28 488
31 이 달의 기술자료 - 2015년 10월 file 험프리 2015.09.25 567
30 [시애틀] FireDAC NoSQL 드라이버로 몽고DB를 완벽 지원합니다. Humphery 2015.09.04 1011
29 [앵콜세미나] 사물인터넷 실제 구현하기, DeepDive!: 비콘, 스마트조명, 블루투스 체중계 관리자 2015.08.19 550
28 이 달의 기술자료 - 2015년 08월 험프리 2015.07.28 678
» 데이터스냅에서 제공하는 JSON 포맷 데이터 사용(분석)하기 [1] file Humphery 2015.07.20 3881
26 이 달의 기술자료 - 2015년 07월 file 험프리 2015.06.26 1257
25 RAD Studio 사물인터넷 참고자료와 샘플 모음 file Humphery 2015.06.23 2284
24 [FireDAC Skill Sprints] 8. TFDMemTable: 메모리 기반 데이터셋 사용하기 Humphery 2015.04.06 2674
23 [FireDAC Skill Sprints] 9. LocalSQL: DB에서 가져온 데이터(데이터셋)를 대상으로 다시 SQL쿼리 실행하기 Humphery 2015.04.01 2013
22 [FireDAC Skill Sprints] 1. FireDAC 소개 험프리 2015.04.01 1633
21 VCL앱을 모바일앱으로 쉽게 확장할 수 있는 앱테더링 자세히 살펴보기! [3] Humphery 2014.11.11 3457
20 8단계로 완성하는 "2014년 출시 앨범" 앱 개발 따라하기 [1] file Humphery 2014.10.07 3711
19 "Could not load SSL library." 오류 대응(XE7: BaaS, RESTClient, DataSnap) [1] Humphery 2014.09.12 16080