StringJson 함수는 json 형식의 문자열에서 jsonpath에 해당하는 값을 문자열로 반환한다.
string @StringJson(string source, string jsonPath);
함수인자
string source : 대상 문자열
string jsonPath: 찾을 json 값의 경로 (하단의 JsonPath 작성법 참고)
반환 값
JsonPath에 해당하는 json 값.
예제 1
buf = "{ "name": "John", "address": {"city": "Seoul", "street": "Main St."} }"
buf = @StringJson(buf,"$.name"); // 결과 : buf = "John"
buf = @StringJson(buf,"$.address.city"); //결과 buf = "Seoul"
예제 2
filepath =
"C:\\AutoBase\\Project\\ApiClientTest\\RESTAPIClient\\태양열_log.txt";
size =
@FileGetSize(filepath);
handle = @FileOpen(filepath, "r");
if(handle != 0)
{
@FileRead(handle, buf, size,1);
@FileClose(handle);
}
buf =
@StringJson(buf,"$.inverter[0].pv");
$ST_inverter0_pv = buf;
문장설명 : 지정한 경로의 태양열_log.txt 파일을 UTF-8 형식으로 읽어 "$.inverter[0].pv" 에 해당하는 값을 $ST_inverter0_pv 태그에 저장한다.
참고) JSON Path 작성 가이드
1. JSONPath 문법 안내
1-1. 기본 구조
-
JSON 경로는 $ 기호로 시작할 수 있으며, $는 생략 가능합니다
- 객체의 속성은 점(.) 으로 접근합니다
- 배열의 요소는 대괄호([]) 안에 인덱스를
지정합니다
1-2. 배열 접근 방법
- [0], [1], [2] : 특정 인덱스 선택
- [*] : 모든 요소 선택
- [-1] : 마지막 요소 선택
※ 배열 접근 시 대괄호([])는 반드시 필요합니다
1-3. 표현 예시
객체로 시작하는
JSON:
$.store.book 또는 store.book
배열로 시작하는 JSON:
$[0].name 또는
[0].name
$[*].name 또는 [*].name
1-4. 권장사항
- 코드의 명확성을 위해 $ 기호를 포함하는
것을 권장합니다
- 중첩된 구조의 경우 전체 경로를 명시하는 것이 좋습니다
2. 객체({}) 형식일 경우의 기본 문법
$.name - 최상위 객체의 'name' 값
$.address.city - 'address' 객체 안의 'city' 값
$.phones[0] - 'phones' 배열의 첫 번째 항목
$.phones[*] - 'phones' 배열의 모든 항목
$.phones[*].number - 'phones' 배열의 모든 항목의 'number' 값
$.*.city - 모든 하위 객체의
'city' 값
3. 배열([]) 형식일 경우의 기본 문법
$[0] - 배열의 첫 번째 항목
$[*] - 배열의 모든
항목
$[0].name - 첫 번째 항목의 'name' 값
$[*].name - 모든 항목의 'name' 값
$[0].items[*].value - 첫 번째 항목의 'items' 배열의 모든 'value' 값
4. 필터 사용
객체
형식:
$.phones[?(@.type=='mobile')] - type이 'mobile'인 항목
$.items[?(@.price >
100)] - price가 100보다 큰 항목
$.phones[?(@.type=='mobile')].number - type이
'mobile'인 항목의 number 값
배열 형식:
$[?(@.category=='수입')] - category가 '수입'인
항목
$[?(@.amount > 1000)] - amount가 1000보다 큰 항목
$[?(@.category=='지출')].items[*] - category가 '지출'인 항목의 모든 items
버전정보
최초지원: 10.3.6.24
관련항목