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 와 햇갈리죠)
"...." : 10051 TJSONPair(Element 와 햇갈리죠)
"...." TJSONString
10051 TJSONValue
10051 TJSONValue
동행복권의 API는 단순하여 TJSONArray 가 없는 형태이다.
TJSONstring : TJSONValue 가 TJSONPair 가되는데 TJSONValue 자리에 TJSONObject, TJSONArray 가 올 수 있다.
TJASONObject 는 TJSONValue 형태와 TJASONText 형태로 우리가 볼 수 있다.
위의 형태가 TJSONValue 형태이고, 아래 형태가 TJSONText 형태이다.
{
"totSellamnt":100519459000,
"returnValue":"success",
..............
}
"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번째 형태로 보여줍니다.
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 해보겠습니다.
댓글 없음:
댓글 쓰기