<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />이 JSL 파일에는 변환 기능이 포함되어 있습니다. JSON 텍스트를 JSL 데이터 구조 또는 JMP 데이터 테이블에 입력합니다. JSON은 중첩된 "배열" 및 "개체"의 구조를 나타냅니다. JSON 유형/값은 JSL에서 다음과 같이 표현됩니다.
| JSON | JSL | 메모 |
|---|
| 정렬 | 목록 | 일련의 값 |
| 물체 | 연관 배열 | 명명된 값 집합 |
| 숫자 | 숫자 | |
| 끈 | 끈 | |
| 진실 | 1.0 | |
| 거짓 | 0.0 | |
| 없는 | . | 누락된 값 |
JMP 데이터 테이블로 변환할 때 이름은 열을 나타내고 배열 값은 행을 나타냅니다. 배열이 아닌 값은 배열 값과 일치하도록 채워집니다.
주요기능
모든 함수는 이름 충돌을 피하기 위해 "JSON" 네임스페이스 내에 있습니다. 다른 기능.
dt = JSON:Make Table( json text | obj )
obj = JSON:Parse( json text )
예제 데이터
원본 JSON
{"region":"Europe",
"country":[
{"name":"France", "population":66.1},
{"name":"Germany", "population":80.8}
]
}
변환된 JSL
Associative Array(
{{"country", {
["name" => "France", "population" => 66.1],
["name" => "Germany", "population" => 80.8]
}},
{"region", "Europe"}}
)
설정된 요소의 순서는 유지되지 않습니다. 그것 JMP에서는 알파벳 순으로 됩니다.
구문 분석된 개체의 값은 일반 JSL 첨자를 사용하여 액세스할 수 있습니다. 예를 들어, 데이터 위의 구문 분석 결과를 보유하고 있으면 다음을 사용하여 액세스할 수 있습니다.
data["country"][1]["name"]; // "France"
변환된 데이터 테이블
| 나라 이름 | 국가.인구 | 지역 |
|---|
| 프랑스 | 66.1 | 유럽 |
| 독일 | 80.8 | 유럽 |
지역 값이 반복됩니다.
구현 참고 사항
파일 교환 토론 또는 xan.gregg@jmp.com .
업데이트 : Craige's도 첨부했습니다. JSON 파서 II.jsl , JSON Parser.jsl의 훨씬 빠른 버전입니다.
훌륭합니다. 제 5분 구문 분석은 이제 1초로 줄었습니다!
JSL 목록을 스택으로 사용하여 중첩된 JSON 구조를 처리하는 영리한 코드 Xan은 좋은 생각입니다.
패턴 일치를 사용한 빠른 JSON 구문 분석 아직 잘 테스트되지 않은 코드의 더 빠른 변형.
퍼즐의 중요한 부분인 삽입 기능을 알려주셔서 감사합니다.