# IsJson 스크립트 및 차트 함수

IsJson()은 지정된 문자열에 유효한 JSON(JavaScript Object Notation) 데이터가 포함되어 있는지 테스트합니다. 특정 JSON 데이터 유형의 유효성을 검사할 수도 있습니다.

구문:

value IsJson(json [, type])

반환 데이터 유형: 이중

인수

| 인수 | 설명 |
| --- | --- |
| json | 테스트할 문자열입니다. 추가 공백이나 줄 바꿈을 포함할 수 있습니다. |
| type | 테스트할 JSON 데이터 유형을 지정하는 선택적 인수입니다.<br><br><ul> <li> <p>'value'(기본값)</p> </li> <li> <p>'개체'</p> </li> <li> <p>'ARRAY'</p> </li> <li> <p>'STRING'</p> </li> <li> <p>'숫자'</p> </li> <li> <p>'부울'</p> </li> <li> <p>'null' </p> </li> </ul> |

예: 유효한 차트 표현식과 잘못된 차트 표현식

| 예제 | 결과 |
| --- | --- |
| `IsJson( 'null' )` | `-1 (true)`를 반환합니다. |
| `IsJson( '"abc"', 'value' )` | `-1 (true)`를 반환합니다. |
| `IsJson( '"abc"', 'string' )` | `-1 (true)`를 반환합니다. |
| `IsJson( 123, 'number' )` | `-1 (true)`를 반환합니다. |
| `IsJson( 'text' )` | `0 (false)`을 반환합니다. `'text'`는 유효한 JSON 값이 아닙니다. |
| `IsJson( '"text"', 'number' )` | `0 (false)`을 반환합니다. `'"text"'`는 유효한 JSON 숫자가 아닙니다. |
| `IsJson( '"text"', 'text' )` | `  0 (false) `을 반환합니다. `'text'`는 유효한 JSON 유형이 아닙니다. |

## 예 - IsJson 기본 사항

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

#### 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `API_Response`입니다.

* `ID`라는 파생 필드. 이 필드에서는 `Rec()` 함수를 사용하여 입력 레코드를 열거합니다.

로드 스크립트

```
Example:
Load
Recno() AS ID, API_Response
inline [
API_Response
'{"id": 1, "name": "Alice"}'
'{"id": 2, "name": "Bob"}'
'{invalid json string}'
'{"id": 4, "name": "Charlie"}'
'{"id": 5, name: "David"}'
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* ` ID
                                   `
* ` API_Response
                                   `

다음 계산된 차원을 만듭니다.

* `=IsJson(API_Response)`는 `API_Response`의 값이 유효한 JSON인지 계산합니다.

결과 테이블

| ID | API\_응답 | IsJson(API\_응답) |
| --- | --- | --- |
| 1 | {"id": 1, "name": "Alice"} | -1(true) |
| 2 | {"id": 2, "name": "Bob"} | -1(true) |
| 3 | {유효하지 않은 JSON 문자열} | 0(false) |
| 4 | {"id": 4, "name": "Charlie"} | -1(true) |
| 5 | {"id": 5, name: "David"} | 0(false) |

유효한 JSON 구문을 사용하는 값의 경우 출력은 `-1` 또는 true를 반환합니다.

이 출력은 다음 ID 레코드(`3` 및 `5`)에 대해 잘못된 JSON을 사용하여 `0` 또는 false를 반환합니다.

* `{invalid json string}` — 텍스트 문자열이 유효한 JSON 응답 구조를 나타내지 않습니다.

* `{"id": 5, name: "David"}` — 두 번째 키-값 쌍에서 키 `"name"` 주위에 따옴표가 없습니다.

## 예 - IsJson 시나리오

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsJson.htm)

#### 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Example`이라는 데이터 테이블에 로드되는 데이터 집합입니다.

* 데이터 테이블의 한 필드는 `OrderDetails`입니다.

로드 스크립트

```
Example:
Load *
INLINE [OrderDetails
'{ "order_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total_price": 2400 }'
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 이 필드를 차원으로 추가합니다.

* ` OrderDetails
                                   `

다음 측정값을 만듭니다.

* `IsJson( OrderDetails)`는 `OrderDetails`의 값이 유효한 JSON인지 계산합니다.

* `IsJson( JsonGet ( OrderDetails, '/items/price' ), 'number' )`는 `JsonGet` 함수를 사용하여 `price` 키에 대한 JSON 텍스트를 검색하고 `price`의 값이 숫자인지 유효성을 검사합니다.

결과 테이블

| 주문세부정보 | IsJson(OrderDetails) | IsJson( JsonGet ( 주문세부정보, '/items/price' ), 'number' ) |
| --- | --- | --- |
| { "order\_id": "12345", "customer": { "name": "John Doe", "email": "john.doe@example.com"}, "items": {"product": "Laptop", "quantity": 2, "price": 1200 }, "total\_price": 2400 } | -1(true) | -1(true) |

첫 번째 측정값은 `OrderDetails`에 유효한 JSON 구문이 포함되어 있기 때문에 `-1 (true)`을 반환합니다.

두 번째 측정값은 `price` 키 값이 유효한 숫자 `1200`이기 때문에 `-1 (true)`을 반환합니다.

관련 항목:

* [JsonGet 스크립트 및 차트 함수](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonGet.htm)

* [JsonSet 스크립트 및 차트 함수](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/JsonSet.htm)