JSONParse

텍스트를 JSON 데이터로 구문 분석하고 구문 분석된 JSON 표현을 메모리에 보관하여 다른 JSON 함수와 함께 재사용할 수 있도록 합니다.

포맷 

JSONParse( json )

매개 변수 

json - JSON 대상체나 배열을 포함하는 임의의 텍스트 표현식 또는 필드

반환되는 데이터 유형 

텍스트

다음 버전에서 시작됨 

22.0

설명 

JSONParse는 먼저 입력 json 텍스트 표현식을 평가한 다음 JSON 텍스트를 구문 분석하고 메모리에 이진 표현을 캐시합니다. JSONParse가 변수, 스크립트 매개 변수를 설정하거나 다른 계산에 사용될 경우, 이 이진 표현을 다른 JSON 함수에 사용하여 구문 분석된 데이터를 처리할 수 있습니다.

JSONParse는 json이 유효한 경우 원본 텍스트를 변경하지 않고 반환하며, 유효하지 않은 경우에는 오류 메시지를 반환합니다. JSON이 유효하지 않은 경우, JSONParse는 다른 JSON 함수와 유사하게 "?"로 시작하여 구문 분석 오류에 대한 세부 사항을 뒤이어 설명하는 오류 메시지를 반환합니다.

JSON 성능 최적화를 참조하십시오.

참고 

  • 단일 JSON 작업의 경우, 텍스트에 직접 다른 JSON 함수를 사용하면 JSONParse를 먼저 사용할 때와 동일하게 작업을 수행합니다.

  • JSONParsedState 함수를 사용하면 JSON 데이터가 구문 분석을 완료하였고 유효한지 확인할 수 있습니다.

예제 1 - 간단한 JSON 대상체의 기본 구문 분석

JSONParse ( "{ \"name\": \"Alea\", \"age\": 30, \"city\": \"New York\" }" ) 는 JSON 데이터의 변경되지 않은 { "name": "Alea", "age": 30, "city": "New York" } 텍스트 표현을 반환합니다.

변수를 $$Contact로 설정하면 이진 표현이 메모리에 임시 저장되어 $$Contact를 사용하는 계산에 사용할 수 있습니다.

복사
Let ( [
  $$Contact = JSONParse ( "{ \"name\": \"Alea\", \"age\": 30, \"city\": \"New York\" }" )
  ] ;
  $$Contact
)

JSON이 유효하지 않은 경우 JSONParse는 데이터를 구문 분석하지만 오류 메시지를 반환합니다. 예를 들어, 위의 JSON에서 첫 번째 쉼표가 누락된 경우, JSONParse는 다음을 반환합니다.

복사
? * 줄 1, 열 18
  대상체 선언에서 ',' 또는 '}' 누락

예제 2 - 여러 JSON 대상체 구문 분석

JSONParse를 사용하여 $JSONText1 및 $JSONText2의 JSON 텍스트를 구문 분석하면 JSON 데이터가 다시 구문 분석되지 않고 변수 $ParsedJSON1 및 $ParsedJSON2에서 요소를 검색합니다.

복사
변수 설정 [ $ParsedJSON1 ; 값: JSONParse ( $JSONText1 ) ]
변수 설정 [ $ParsedJSON2 ; 값: JSONParse ( $JSONText2 ) ]
변수 설정 [ $name ; 값: JSONGetElement ( $ParsedJSON1 ; "name" ) ]
변수 설정 [ $id ; 값: JSONGetElement ( $ParsedJSON2 ; "id" ) ]
변수 설정 [ $category ; 값: JSONGetElement ( $ParsedJSON1 ; "category" ) ]

예제 3 - 오류 확인 및 구문 분석된 JSON을 루프에서 사용

오류 확인을 시연하고 루프에서 동일한 JSON 데이터의 여러 요소를 처리할 때 JSONParse를 사용하여 성능을 향상하는 방법을 보여줍니다. $$JSON에는 JSON 데이터 예제의 JSON 텍스트가 포함됩니다. 스크립트가 $$JSON을 구문 분석한 후, 구문 분석된 JSON이 유효한지 확인합니다(JSONParsedState 함수가 양수 값을 반환할 경우). 구문 분석된 JSON이 유효하면 스크립트는 bakery.product 배열을 루프하여 이미 구문 분석된 JSON 데이터에서 값을 가져옵니다.

복사
변수 설정 [ $ParsedJSON ; 값: JSONParse ( $$JSON ) ]
If [ JSONParsedState ( $ParsedJSON ) > 0 ]
   # JSON이 유효합니다. 여러 작업에 대해 구문 분석된 JSON을 사용하십시오.
   변수 설정 [ $ProductCount ; 값: ValueCount ( JSONListKeys ( $ParsedJSON ; "bakery.product" ) ) ]
   변수 설정 [ $i ; 값: 0 ]
   Loop [ Flush: Always ]
      변수 설정 [ $Product ; 값: JSONGetElement ( $ParsedJSON ; "bakery.product[" & $i & "]" ) ]
      변수 설정 [ $ProductName ; 값: JSONGetElement ( $Product ; "name" ) ]
      변수 설정 [ $ProductPrice ; 값: JSONGetElement ( $Product ; "price" ) ]
      # 제품 데이터 처리...
      변수 설정 [ $i ; 값: $i + 1 ]
      Exit Loop If [ $i ≥ $ProductCount ]
   End Loop
Else
   # JSON 구문 분석 오류 처리
   사용자 설정 대화상자 보기 [ "JSON 오류" ; $ParsedJSON ]
End If