레이블이 JSON인 게시물을 표시합니다. 모든 게시물 표시
레이블이 JSON인 게시물을 표시합니다. 모든 게시물 표시

2021년 2월 2일 화요일

JSON 사용해보기 (Parsing)

 JSON의 이론적인 배경이 없이 사용하는데 참고가 될만한 사항만 정리 해봅니다.

동행복권을 REST로 읽어 보면 아래와 같은 구조입니다.

{"totSellamnt":100519459000,"returnValue":"success","drwNoDate":"2021-01-30","firstWinamnt":2188548716,"drwtNo6":41,"drwtNo4":31,"firstPrzwnerCo":11,"drwtNo5":38,"bnusNo":5,"firstAccumamnt":24074035876,"drwNo":948,"drwtNo2":18,"drwtNo3":30,"drwtNo1":13}

{} TJSONObject 
[] TJSONArray

"...." : 10051.. TJSONElement(Array 형태에서)
"...." : 10051   TJSONPair(Element 와 햇갈리죠)

"...." TJSONString
10051 TJSONValue

동행복권의 API는 단순하여 TJSONArray 가 없는 형태이다.

TJSONstring : TJSONValue 가 TJSONPair 가되는데 TJSONValue 자리에 TJSONObject, TJSONArray 가 올 수 있다.

TJASONObject 는 TJSONValue 형태와 TJASONText 형태로 우리가 볼 수 있다.

위의 형태가 TJSONValue 형태이고, 아래 형태가 TJSONText 형태이다.

{
   "totSellamnt":100519459000,
   "returnValue":"success",
   ..............
}


DELPHI의 RESTResponce 에는 이 2가지형태를 전부 제공해줍니다.
Var
  iJsonObject: TJSONObject;
  iJsonValue: TJSONValue;
선언해주고
iJsonObject := TJSONObject(RESTResponse1.JSONValue); 이와 같이 하여 가져옵니다.
Edit1.Text:= iJsonObject.ToJSON; 하면 위와 같은 형식으로 볼 수 있고
Memo1.Lines.Add( iJsonObject.ToString); 하면 2번째 형태로 보여줍니다.

예를 들어 bnusNo 의 값을 읽어오려면
iJsonValue := iJsonObject.Get('bnusNo').JSONValue; 와 같이 하면 되는데
TJsonValue는 TJSONObject가 될 수도 있고, string, number, boolean 이 될 수도 있다.
TJSONObject, , JSONString, TJSONNumber, TJSONPair, TJSONBool, TJSONArray

이렇게 알고 있는 형태로 변환하면서 읽어오면 됩니다.

물론 각각은 .Size 가 있어서 for var idx:= 0 iJsonValue.size -1 형태로 여러개의 Pair를 읽어 올 수도 있습니다.

다음에 기회되면 조금 복잡한 형태의 JSON을 읽어 Parsing 해보겠습니다.

델파이의 부활(Antigravity와의 만남)?

 델파이 프로그램을 사용하여 개인적으로 필요한 프로그램을 생성해 왔는데, 얼마전부터 파이썬으로 옮겨갔다.  그런데 Google 의 Antigravity를 만나고 나서 델파이에 대한 미련을 버리지 못해  제미나이가 Delphi이에 대한 학습도 엄청 했을...