[Uipath] DataTable을 JsonString으로 바꿔서 API Request 보내는 법 그리고 API 결과 받기
요즘 API를 자주 사용하게 돼서 ~ To Json String 또는 Json String To ~ 이런걸 많이 하게 되는데
보통은 DT나 dictionary형 List를 많이 바꾸게 된다.
저번에 짜 놓은 DT를 제이슨 스트링으로 바꾸어 API를 쏘는 방법을 간단하게 정리 해 보겠다.
1. 패키지 설치
2. api 바디 확인
{
"data": [
{
"A": "string",
"B": 0,
"C": "string",
"D": 0,
"E": "2023-03-07T05:10:53.484Z"
}
]
}
위 형식에 맞춰서 DataTable을 만든다.
(컬럼 명,value 형식 같게 바꿔줌)
3. DT를 Json String으로 변환
1) Assign을 통해 DT를 JsonString으로 변환한다.
jsonString = JsonConvert.SerializeObject(DT)
위처럼 변환해서 jsonString을 찍어 보면
이렇게 [{컬럼1 : 첫번째 row 값 , 컬럼2 : 첫번째 row 값},{컬럼1 : 두번째 row 값 , 컬럼2 : 두번째 row 값} ...] 으로 나온다
2) jsonString을 Deserialize JSON Array 액티비티를 통해 JsonArray로 변환한다 (output 변수 명 : jsonArr)
참고로 'Deserialize JSON'라는 액티비티도 많이 쓰이는데, 거기선 무슨 형태로 바꾸고 싶은지 선택 가능하다.
이걸 사용한 과제도 있었는데 .. 찾으면 첨부하겠다 (어떤 Case인지 )
또, API를 쏘면 결과를 받아 uipath에서 변수에 담아야하는 과제가 있었는데
DIC = JsonConvert.DeserializeObject(Of Dictionary(Of String,string()))(sJsonString변수)
위처럼 해서 jsonString을 dict(string,String[]) 로 받았다.
Request Body 형식이나 API에서 Get 해 오는 형식에 따라 다양하게 바꿨었다
3) json array로 변환한 변수를 API 바디와 똑같이 만들어준다.
sResult = "{""data"":["+string.Join(",",jSonArr)+"]}"
4. HTTP Request 액티비티 사용
아까 만든 sResult를 Body에 넣고 Body Format이 원래는 application/xml로 되어있는데 우린 json형태로 넣기 때문에 json으로 바꿔주면 된다.
이렇게 하면 GET/POST 등 잘 된다.
response status를 받아서 성공/실패 확인하며 고쳐봐도 도움이 많이 된다.