데이터스냅으로 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 18996
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 17363
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 19893
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 25521
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 26829
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 22222
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 42860
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 178189
19 RAD서버 도커(Docker) 기술 가이드 관리자 2020.02.26 457
18 [코드레이지 2019] 웹소켓(WebSocket)과 델파이 험프리 2020.01.22 1272
17 RAD서버에서 데이터를 JSON으로 어떻게 오픈할 수 있을까요? (JSONValue와 JSONWriter 활용하기) 관리자 2020.01.21 333
16 C++ 개발자를 위한 파이어닥(FireDAC) 시작하기 관리자 2020.01.14 339
15 서베이몽키(SurveyMonkey)를 프로젝트에 연동하기 관리자 2019.09.20 743
14 "모든" 데이터를 프로젝트에 연동하기 - 파이어닥(FireDAC) 엔터프라이즈 커넥터 활용 관리자 2019.09.19 490
13 유투브(YouTube)와 워드프레스(WordPress)를 엔터프라이즈 커넥터로 연동해 활용하기 관리자 2019.08.21 406
12 델파이로 빅데이터 데이터베이스 연동하기(Cassandra, Couchbase, MongoDB) 험프리 2017.10.30 1147
11 엔터프라이즈 커넥터로 '구글 드라이브 VCL 애플리케이션' 만들기 file 관리자 2017.09.29 1389
10 [FireDac] FDConnection 데이터베이스 Connection 설정 file 김원경 2017.09.01 4674
9 세일즈포스(Salesforce) 데이터, RAD스튜디오 데이터 익스플로러로 연동하기 file 관리자 2017.07.26 831
8 엔터프라이즈 커넥터로 '트위터' 연동하기 file 관리자 2017.07.17 937
7 엔터프라이즈 커넥터 - 엠바카데로의 새로운 솔루션 [1] file 관리자 2017.07.12 2005
6 [FireDAC] FireDAC에 대한 궁금증을 FAQ를 통해 해결해 보세요. file 험프리 2017.02.14 538
5 [코드레이지11] FireDAC 이해하기, RAD 스튜디오 데이터 엑세스 프레임워크 선택 - Cary Jensen 험프리 2016.11.24 574
4 TeeChart 컴포넌트를 통해 다양한 차트 및 그래프로 데이터를 출력할 수 있습니다. file 험프리 2016.08.30 5362
3 FireDAC 성능 비교(BDE, dbGO(ADO), dbExpress, FireDAC) 험프리 2016.08.09 1783
2 BLOB 컬럼에 (이미지 등의)데이터 읽고 쓰기 험프리 2016.08.01 6176
» 데이터스냅에서 제공하는 JSON 포맷 데이터 사용(분석)하기 [1] file Humphery 2015.07.20 3828