다음을 통해 공유


ParseJSON 함수

적용 대상: 캔버스 앱 모델 기반 앱 Power Pages Power Platform CLI

JSON 문자열을 해석하고 무형식 개체를 반환합니다.

Description

ParseJSON 함수는 유효한 JSON 문자열을 구문 분석하고 JSON 구조를 나타내는 무형식 개체를 반환합니다.

ParseJSON 함수는 ECMA-404IETF RFC 8259에 설명된 JSON(JavaScript Object Notation) 형식에 따라 텍스트가 유효한 JSON이 아닌 경우 오류를 반환할 수 있습니다.

구문

ParseJSON( JSONString )

  • JSONString – 필수. 텍스트로 표현되는 JSON 구조입니다.

무형식 개체 데이터 형식 변환

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 )
( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( 값( uo.r ), 값( uo.g ), 값( uo.b ), 값( 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("{ ""예약"": ""2022-05-10"" }").예약)
DateValue( Text( ParseJSON("{ ""appointment"": ""2022년 5월 5일"" }").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에서 사용할 수 있습니다. 텍스트(ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }").URI)
선택 항목 { "status": 1 }
{ "status": "Closed" }
선택 항목은 숫자로 뒷받침되는 현지화된 문자열로 표시됩니다. JSON() 함수는 선택 항목을 지원 번호로 직렬화합니다. 숫자 또는 문자열에서 선택으로 직접 변환하는 기능은 없지만 Switch() 또는 If() 함수를 텍스트 또는 숫자 값에 사용할 수 있습니다. 스위치(값(ParseJSON("{ ""상태"": 1 }" ).상태), 0, 상태.열림, 1, 상태.닫힘)
녹음 { "field": "value" } JSON 개체에서 레코드 구조로의 직접 변환은 없지만 무형식 개체에서 개별 필드를 검색하여 레코드를 형성할 수 있습니다. { 필드: 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: 값(ThisRecord.Value.id), 이름: 텍스트(ThisRecord.Value.name) } )
문자 { "stringField": "this is text" } 텍스트는 JSON의 명시적 유형이며 직접 변환할 수 있습니다. Text(ParseJSON( "{ ""stringField"": ""이것은 텍스트입니다"" }").stringField )
두 가지 옵션 { "available": true }
{ "available": "Yes" }
두 가지 옵션이 부울로 뒷받침되는 현지화된 문자열로 제공됩니다. JSON() 함수는 두 가지 옵션을 부울 값으로 직렬화합니다. 부울, 숫자 또는 문자열을 두 가지 옵션으로 직접 변환할 수는 없지만 텍스트, 숫자 또는 부울 값에 Switch() 또는 If() 함수를 사용할 수 있습니다. 스위치( 부울( ParseJSON( "{ ""사용 가능"": true }" ).사용 가능 ), false, Availability.No, true, 사용 가능 여부.예 )

필드 값 액세스

JsonString이라는 변수에 다음 JSON 문자열이 있는 경우

{ "parent": { "child": "text value" }, "number": 567 }
  1. 다음 수식은 텍스트 text value을 반환합니다.
    Text( ParseJSON( JsonString ).parent.child )
    
  2. 다음 수식은 숫자 567을 반환합니다.
    Value( ParseJSON( JsonString ).number )
    

필드 이름이 잘못된 식별자 이름으로 구성된 경우 필드 이름을 작은 따옴표로 묶을 수 있습니다. JsonString이라는 변수에 다음 JSON 문자열이 있는 경우

{ "0": { "child-field": "text value" } }
  1. 다음 수식은 텍스트 text value을 반환합니다.
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

공백

JsonString이라는 변수에 다음 JSON 문자열이 있는 경우

{ "text": "text value" , "number": 567, "empty": null }
  1. 존재하지 않는 필드에 액세스하려고 하면 Blank()가 반환됩니다. 다음 수식은 true를 반환합니다.
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. JSON null 값은 Blank()로 간주됩니다. 다음 수식은 true를 반환합니다.
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

단순 배열

JsonString이라는 변수에 다음 JSON 문자열이 있는 경우

{ "array": [1, 2, 3] }
  1. 무형식 개체의 배열 필드 단일 열 테이블에서 두 번째 숫자에 액세스하고 Value()를 사용하여 숫자로 변환하면 2가 반환됩니다.
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. 배열 필드에 있는 무형식 개체의 단일 열 테이블을 숫자 { Value: 1 }, { Value: 2 }, { Value: 3 }의 단일 열 테이블로 변환:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

레코드 배열

JsonString이라는 변수에 다음 JSON 문자열이 있는 경우

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. ForAll()을 사용하여 유형이 지정된 레코드 테이블로 직접 변환하는 것은 ThisRecord.[fieldname]를 사용하여 무형식 개체 필드에 액세스하고 이를 알려진 유형으로 변환함으로써 수행할 수 있습니다.

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

배열에서 테이블

  1. 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 )