[Uipath] DataTable을 JsonString으로 바꿔서 API Request 보내는 법 그리고 API 결과 받기

2023. 3. 7. 17:02RPA

요즘 API를 자주 사용하게 돼서 ~ To Json String 또는 Json String To ~ 이런걸 많이 하게 되는데

보통은 DT나 dictionary형 List를 많이 바꾸게 된다.

저번에 짜 놓은 DT를 제이슨 스트링으로 바꾸어 API를 쏘는 방법을 간단하게 정리 해 보겠다.

 

1. 패키지 설치

WebAPI 라고 검색하면 나오는 패키지

2. api 바디 확인

내가 쓸 API의 Swagger UI

 

{
  "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을 찍어 보면

DT를 JsonString으로 변환한 것

이렇게 [{컬럼1 : 첫번째 row 값 , 컬럼2 : 첫번째 row 값},{컬럼1 : 두번째 row 값 , 컬럼2 : 두번째 row 값} ...]  으로 나온다

2) jsonString을 Deserialize JSON Array 액티비티를 통해 JsonArray로 변환한다 (output 변수 명 : jsonArr)


참고로 'Deserialize JSON'라는 액티비티도 많이 쓰이는데, 거기선 무슨 형태로 바꾸고 싶은지 선택 가능하다.

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 액티비티 사용

HTTP Request 주로 수정해야하는 설정 값들

아까 만든 sResult를 Body에 넣고 Body Format이 원래는 application/xml로 되어있는데 우린 json형태로 넣기 때문에 json으로 바꿔주면 된다.

이렇게 하면 GET/POST 등 잘 된다. 

response status를 받아서 성공/실패 확인하며 고쳐봐도 도움이 많이 된다.