ParseJSON 함수
적용 대상: 캔버스 앱
모델 기반 앱
Power Pages
Power Platform CLI
JSON 문자열을 해석하여 형식화되지 않은 개체 또는 형식화된 개체를 반환합니다.
중요
- ParseJSON의 두 번째 인수를 사용하여 형식화된 개체로 변환하는 것은 실험적 기능입니다.
- 실험적 기능은 생산용으로 만들어진 것이 아니므로 제한될 수 있습니다. 이러한 기능은 공식 릴리스 이전에 제공되므로 사용자가 조기에 액세스하고 피드백을 제공할 수 있습니다. 추가 정보: 캔버스 앱의 실험적 기능, 프리뷰 및 사용 중지된 기능 이해
- 이 문서에서 설명하는 동작은 설정 > 예정된 기능 > 실험적의 사용자 정의 형식 실험적 기능이 켜져 있는 경우에만 사용할 수 있습니다(기본적으로 꺼져 있음).
- 귀하의 의견은 우리에게 매우 소중합니다. Power Apps 실험적 기능 커뮤니티 포럼에 의견을 남겨주세요.
Description
ParseJSON 함수는 유효한 JSON 문자열을 구문 분석하고 JSON 구조를 나타내는 형식화되지 않은 개체를 반환합니다.
필요에 따라 두 번째 인수를 사용하여 JSON을 Power Fx 수식에서 직접 사용할 수 있는 형식화된 개체로 변환합니다. 이렇게 하면 사용 시점의 변환 및 강제 변환이 더 이상 필요하지 않으므로 결과를 더 쉽게 사용할 수 있습니다. 형식화되지 않은 JSON은 다음 규칙을 사용하여 형식에 매핑됩니다.
- JSON에 없는 형식의 열은 공백으로 채워집니다.
- 형식에 없는 JSON의 열은 무시됩니다.
- 형식 및 JSON에 모두 있는 열의 경우 JSON 값을 형식으로 강제 변환할 수 있어야 합니다.
ParseJSON 함수는 텍스트가 ECMA-404 및 IETF RFC 8259에 설명된 JavaScript Object Notation(JSON) 형식에 따른 유효한 JSON이 아닌 경우 오류를 반환할 수 있습니다.
구문
ParseJSON( JSONString [ , Type ] )
- JSONString – 필수 항목입니다. 텍스트로 표현되는 JSON 구조입니다.
- 형식 - 선택 사항입니다. JSON 구조에 대한 Power Fx 형식 정의입니다. 이 인수가 없으면 ParseJSON은 형식화되지 않은 개체를 반환합니다. 이 인수와 함수가 있으면 강력한 형식의 개체가 반환됩니다.
무형식 개체 데이터 형식 변환
두 번째 인수가 없으면 ParseJSON은 지원되는 데이터 유형의 필드 값을 명시적으로 변환해야 하는 형식화되지 않은 개체를 반환합니다. 다음 표에는 Power Apps의 데이터 형식 및 해당 JSON 데이터 형식 및 변환 방법이 나와 있습니다.
데이터 형식 | JSON 예시 | Description | 예시 변환 |
---|---|---|---|
부울 | { "bool": true } |
부울은 JSON의 명시적 유형이며 직접 변환할 수 있습니다. | 부울( ParseJSON("{ ""bool"": true }").bool ) |
색상 | { "color": "#102030" } { "r": 255, "g": 128, "b": 0, "a": 0.5 } |
JSON에는 색상 유형이 없습니다. 색상 값은 RGBA 정수 또는 16진수 문자열에서 만들 수 있습니다. |
ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) ) |
통화, 숫자 | { "numbervalue": 123.5 } |
숫자는 소수점 구분 기호로 마침표( . )를 사용하여 JSON으로 직접 표시됩니다. | 값( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
날짜, 날짜/시간, 시간 | { "start": "2022-05-10" } { "start": "23:12:49.000" } |
JSON에는 날짜 또는 시간 유형이 없으므로 날짜와 시간을 문자열로만 나타낼 수 있습니다. 형식이 지정되지 않은 개체는 ISO 8601 형식의 문자열에서 날짜, 시간 또는 날짜/시간으로 직접 변환될 수 있습니다. 다른 형식의 경우 먼저 Text() 함수를 사용하여 JSON 필드를 텍스트로 변환한 다음 기본적으로 현재 사용자 설정의 언어를 사용하는 DateValue(), TimeValue() 또는 DateTimeValue() 함수를 사용합니다. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) ) |
GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
JSON에는 GUId에 대한 데이터 유형이 없으므로 문자열로만 표시할 수 있습니다. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
하이퍼 링크, 이미지, 미디어 | { "URI": "https://northwindtraders.com/logo.jpg" } |
이러한 데이터 형식은 텍스트 데이터 형식이며 텍스트로 변환하여 Power Apps에서 사용할 수 있습니다. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI ) |
선택 항목 | { "status": 1 } { "status": "Closed" } |
선택 항목은 숫자로 뒷받침되는 현지화된 문자열로 표시됩니다. JSON() 함수는 선택 항목을 지원 번호로 직렬화합니다. 숫자 또는 문자열에서 선택으로 직접 변환하는 기능은 없지만 Switch() 또는 If() 함수를 텍스트 또는 숫자 값에 사용할 수 있습니다. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
녹음 | { "field": "value" } |
JSON 개체에서 레코드 구조로의 직접 변환은 없지만 무형식 개체에서 개별 필드를 검색하여 레코드를 형성할 수 있습니다. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
레코드 참조 | 해당 없음 | 레코드 참조는 데이터 소스에 고유하며 직렬화하거나 직렬화 해제할 수 없습니다. 고유 키를 나타내는 필드 값은 조회할 수 있는 레코드를 식별하기 위해 JSON에서 사용할 수 있습니다. | 해당 없음 |
테이블 | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ] [1, 2, 3] |
JSON은 테이블로 변환할 수 있는 배열을 포함할 수 있습니다. 이러한 값은 레코드 배열이거나 사실상 단일 열 테이블인 값 배열일 수 있습니다. ParseJSON() 배열은 무형식 개체의 단일 열 테이블로만 변환될 수 있으며, 그대로 사용하거나 ForAll()을 사용하여 유형이 지정된 레코드 테이블로 변환할 수 있습니다. | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
문자 | { "stringField": "this is text" } |
텍스트는 JSON의 명시적 유형이며 직접 변환할 수 있습니다. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
두 가지 옵션 | { "available": true } { "available": "Yes" } |
두 가지 옵션이 부울로 뒷받침되는 현지화된 문자열로 제공됩니다. JSON() 함수는 두 가지 옵션을 부울 값으로 직렬화합니다. 부울, 숫자 또는 문자열을 두 가지 옵션으로 직접 변환할 수는 없지만 텍스트, 숫자 또는 부울 값에 Switch() 또는 If() 함수를 사용할 수 있습니다. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
예
필드 값 액세스
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "parent": { "child": "text value" }, "number": 567 }
- 다음 수식은 텍스트
text value
을 반환합니다.Text( ParseJSON( JsonString ).parent.child )
- 다음 수식은 숫자
567
을 반환합니다.Value( ParseJSON( JsonString ).number )
필드 이름이 잘못된 식별자 이름으로 구성된 경우 필드 이름을 작은 따옴표로 묶을 수 있습니다.
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "0": { "child-field": "text value" } }
- 다음 수식은 텍스트
text value
을 반환합니다.Text( ParseJSON( JsonString ).'0'.'child-field' )
공백
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "text": "text value" , "number": 567, "empty": null }
- 존재하지 않는 필드에 액세스하려고 하면 Blank()가 반환됩니다. 다음 수식은
true
를 반환합니다.IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
- JSON
null
값은 Blank()로 간주됩니다. 다음 수식은true
를 반환합니다.IsBlank( Text( ParseJSON( JsonString ).empty ) )
단순 배열
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "array": [1, 2, 3] }
-
무형식 개체의 배열 필드 단일 열 테이블에서 두 번째 숫자에 액세스하고 Value()를 사용하여 숫자로 변환하면
2
가 반환됩니다.Value( Index( ParseJSON( JsonString ).array, 2 ) )
- 배열 필드에 있는 무형식 개체의 단일 열 테이블을 숫자
{ Value: 1 }, { Value: 2 }, { Value: 3 }
의 단일 열 테이블로 변환:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
레코드 배열
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
ForAll()을 사용하여 유형이 지정된 레코드 테이블로 직접 변환하는 것은
ThisRecord.[fieldname]
를 사용하여 무형식 개체 필드에 액세스하고 이를 알려진 유형으로 변환함으로써 수행할 수 있습니다.ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
배열에서 테이블
-
Table() 함수를 사용하여 무형식 개체를 테이블로 변환하면 무형식 개체의 단일 열 테이블이 생성됩니다. 그런 다음 객체는
Value
(단일) 열을 사용하여 액세스하고 앞에서 설명한 대로 유형으로 변환해야 합니다.
JsonString
이라는 변수에 다음 JSON 문자열이 있는 경우
{ "array": [1, 2, 3] }
Table()은 배열의 숫자에 대한 단일 열 값이 있는 무형식 개체의 단일 열 테이블을 반환합니다...
Set(untypedTable, Table( ParseJSON( JsonString ).array ));
Value( Index(untypedTable, 1).Value.Value )
```
Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Table()은 배열의 각 json 개체를 나타내는 무형식 개체의 단일 열 테이블을 반환합니다.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )