오늘도 Azure로운 Power Platform :D
드디어 Power Apps에서 JSON을 파싱할 수 있게 되었습니다.
그동안은 MatchAll() 함수를 사용해서 정규표현식으로 JSON을 일일히 파싱하거나, Power Automate로 보내서 파싱한 후 다시 앱으로 보내는 방법을 사용하고 계셨을 겁니다.
MatchAll( ProductRecommendationsJSON,
"""Score""\s*:\s*(?<Score>[^,]*)\s*,\s*" &
"""ProductID""\s*:\s*""(?<ProductID>[^""]*)""\s*,\s*" &
"""ProductName""\s*:\s*""(?<ProductName>[^""]*)""", MatchOptions.Multiline )
그러나 위와 같은 방법은 앱을 사용하는 도중 JSON이 조금이라도 바뀔 수도 있는 상황에선 적합하지 않을 수 있습니다. Power Automate를 사용하는 것 또한 번거로운 작업이죠.
이젠 ParseJSON() 함수로 편하게 Canvas app에서 바로 할 수 있게 되었습니다.
ParseJSON
ParseJSON 함수를 Microsoft 에서는 다음과 같이 설명하고 있습니다.
The ParseJSON function will be the first (and for now the only) function to return an untyped object. It accepts a text value that is a valid JSON string.
ParseJSON 함수는 untyped object를 반환하는 첫(지금으로서는 단 하나의) 함수입니다. 이 함수는 JSON 문자열값을 받습니다.
가령 다음과 같은 JSON String을 반환하는 Connector가 있다고 가정합니다. (Connector 명 : connector1)
{
"userID" : "A1022",
"name" : "홍길동"
"division" : "DX",
}
이 경우, 해당 JSON String을 ParseJSON() 함수를 통해 다음과 같이 사용할 수 있습니다.
Set( employeeInfo, ParseJSON( connector1.GetBody() ) )
employeeInfo.userID // A1022
employeeInfo.name // 홍길동
employeeInfo.division // DX
단, employee.userID, employee.name, employee.divison 또한 데이터 타입이 untyped 이므로 따로 사용할 때는 아래와 같이 타입을 Text로 바꾸어야 합니다.
Text(employee.userID)
Text(employee.name)
Text(employee.division)
JSON String to Table
이 untyped JSON String을 바로 Table로 바꿀 수도 있습니다. (말그대로 untyped 였으니까요 :D)
JSON String을 ParseJSON() 함수를 사용하여 "untypedJSONTable"이라는 변수에 담았다고 가정합니다.
Set(
untypedJSONTable,
ParseJSON(
[
{ "id" : 1, "name" : "가길동" },
{ "id" : 2, "name" : "나길동" },
{ "id" : 3, "name" : "다길동" }
]
)
Table() 함수를 통해 Table로 변환할 수 있습니다.
Table(untypedJSONTable)
다만, untyped 였으므로 Table 속의 값들도 전부 untyped 입니다. Typed table로 바꾸려면 ForAll() 이라는 함수를 사용해 볼 수 있습니다.
ClearCollect(
collection,
ForAll(
Table(untypedJSONTable),
{
id: Value(Value.id),
name: Text(Value.name)
}
)
)
이번에 새로 나온 ParseJSON() 이라는 함수에 대해 정리해보았습니다. Power Apps에서 처음으로 리턴값이 untyped인 함수라는게 흥미롭네요. 효율을 굉장히 증가시켜줄 것으로 예상되는 함수입니다. 커뮤니티 반응도 뜨겁더라고요. :D
ParseJSON()은 release version 3.22091.11 부터 사용이 가능합니다.
'Azure로운 Power Platform > Power Platform' 카테고리의 다른 글
[Power BI] 테넌트 외부로 데이터셋 공유 (Cross-Tenant Dataset Sharing/in-place sharing) (0) | 2022.09.14 |
---|---|
[Power Apps] Power Apps 란? (파워앱스/canvas app/model-driven app/portal) (2) | 2022.09.11 |
[Power BI] 데이터 그룹핑 (no code/data grouping) (0) | 2022.08.31 |
[Power BI] 임베디드 라이선스 (Power BI Embedded Analytics) (0) | 2022.08.23 |
[Power BI] 동적 데이터 라벨 (Dynamic Data Label/Tabular Editor) (0) | 2022.08.18 |
댓글