jsonencode
구조화된 MATLAB 데이터에서 JSON 형식의 텍스트 생성
설명
txt = jsonencode(
는 하나 이상의 이름-값 쌍의 인수를 사용하여 data
,Name,Value
)data
를 인코딩합니다.
예제
입력 인수
제한 사항
jsonencode
는 복소수 숫자나 희소 배열을 지원하지 않습니다. 객체는 객체 속성에 정의된get
메서드를 사용하여 이름-값 쌍으로 인코딩된 퍼블릭 속성을 가져야 합니다.jsonencode
는 은닉 속성을 지원하지 않습니다.jsonencode
는 부모 객체와 자식 객체에 대한 참조가 들어 있는 그래픽스 객체와 같은 재귀적 구조체를 지원하지 않습니다.어떤 값을 인코딩한 후 디코딩하는 경우 MATLAB이 그 데이터형을 유지한다는 보장은 없습니다. JSON은 MATLAB보다 지원하는 데이터형 개수가 적기 때문에, 데이터형 정보가 손실됩니다. 예를 들어, JSON 데이터는
double
형과int32
형을 구분하지 않습니다.int32
형 값을 인코딩한 다음jsondecode
를 호출하는 경우, 디코딩된 값은double
형입니다.MATLAB이 배열의 형태를 그대로 유지한다는 보장은 없습니다. 예를 들어, 1×N 숫자형 벡터는 배열로 인코딩됩니다.
jsondecode
를 호출하는 경우 MATLAB은 이 배열을 N×1 벡터로 디코딩합니다.
팁
새 줄 이스케이프 문자
\n
을 유지하려면newline
함수를 사용하십시오.jsonencode(['one' newline 'two'])
ans = '"one\ntwo"'
다른
\
이스케이프 문자를 유지하려면 입력값에 대해sprintf
를 호출하십시오.sprintf
가 원하는 결과를 만드는지 입력값을 테스트합니다.jsonencode(sprintf('AB\tCD'))
ans = '"AB\tCD"'
입력값에 큰따옴표
"
가 포함되어 있으면 함수가\
이스케이프 문자를 삽입합니다.jsonencode('one"two')
ans = '"one\"two"'
알고리즘
JSON은 MATLAB보다 지원하는 데이터형 개수가 적습니다. jsonencode
는 MATLAB 데이터형을 아래에 나열된 JSON 데이터형으로 변환합니다.
MATLAB 데이터형 | JSON 데이터형 | 예제 | 출력값 |
---|---|---|---|
배열, 비어 있음 | 배열, 비어 있음 | jsonencode([]) jsonencode(string.empty) | '[]' |
논리형 스칼라 | 부울 | jsonencode(true) | 'true' |
논리형 벡터 | 부울로 구성된 배열 | jsonencode([true,false,false]) | '[true,false,false]' |
논리형 배열 | 부울로 구성된 중첩 배열 | jsonencode(logical([0,1,0;1,1,0])) | '[[false,true,false],[true,true,false]]' |
문자형 벡터 | 문자열 | jsonencode('This is a char.')
| '"This is a char."' |
문자형 배열 | 문자열로 구성된 배열 | jsonencode(['AC';'EG']) | '["AC","EG"]' |
string형 스칼라 | 문자열 | jsonencode("This is a string.")
| '"This is a string."' |
string형 벡터 | 문자열로 구성된 배열 | jsonencode(["AC";"EG"]) | '["AC","EG"]' |
string형 배열 | 문자열로 구성된 중첩 배열 | jsonencode(["AC","EG";"BD","FH"]) | '[["AC","EG"],["BD","FH"]]' |
빈 문자형 벡터 | 문자열 | jsonencode('')
| '""' |
| null | jsonencode(string(nan)) | 'null' |
숫자형 스칼라 | 숫자 | jsonencode(2.5) | '2.5' |
숫자형 벡터 | 숫자로 구성된 배열 | jsonencode(1:3) | '[1,2,3]' |
숫자형 배열 | 숫자로 구성된 중첩 배열 | jsonencode(eye(2)) | '[[1,0],[0,1]]' |
복소수 | 지원 안 됨 | ||
테이블 | 객체로 구성된 배열 | Name = {'Jones';'Brown'}; Age = [40;49]; jsonencode(table(Name,Age)) | '[{"Name":"Jones","Age":40},{"Name":"Brown","Age":49}]' |
셀형 스칼라 | 요소 1개로 구성된 배열 | jsonencode({5}) | '[5]' |
셀형 벡터 | 배열 | jsonencode({'a',true,[2;3]})
| '["a",true,[2,3]]' |
셀형 배열 | 차원 하나로 나열된 배열 | jsonencode({1 2;3 4}) | '[1,3,2,4]' |
구조체형 스칼라 | 객체 | jsonencode(struct('a','value')) | '{"a":"value"}' |
구조체형 벡터 | 객체로 구성된 배열 | jsonencode(struct('a',{true,true,false}))
| '[{"a":true},{"a":true},{"a":false}]' |
구조체형 배열 | 객체로 구성된 중첩 배열 | ||
datetime형 스칼라 | 문자열(문자열 형식으로 변환하기 위해 | jsonencode(datetime('tomorrow'))
| '"04-Nov-2016"' |
datetime형 벡터 | 문자열로 구성된 배열 | DT = datetime({'8 April 2015','9 May 2015'}, ... 'InputFormat','d MMMM yyyy'); jsonencode(DT) | '["08-Apr-2015","09-May-2015"]' |
datetime형 배열 | 문자열로 구성된 중첩 배열 | DT = datetime(... [{'April 2015','May 2015'};{'June 2015','July 2015'}], ... 'InputFormat','MMMM yyyy'); jsonencode(DT) | '[["01-Apr-2015","01-May-2015"], ["01-Jun-2015","01-Jul-2015"]]' |
categorical형 스칼라 | 문자열(문자열 형식으로 변환하기 위해 | jsonencode(categorical({'r'})) | '"r"' |
categorical형 벡터 | 문자열로 구성된 배열 | jsonencode(categorical({'r';'g';'b'})) | '["r","g","b"]' |
categorical형 배열 | 문자열로 구성된 중첩 배열 | jsonencode(categorical( ... {'r' 'b' 'g'; ... 'g' 'r' 'b'; ... 'b' 'r' 'g'})) | '[["r","b","g"],["g","r","b"],["b","r","g"]]' |
containers.Map | 객체 | jsonencode(containers.Map( ... {'Jan','Feb','Mar'}, ... [327,368,197])) | '{"Feb":368,"Jan":327,"Mar":197}' |
NaN | null | jsonencode([1,2,NaN,3,Inf]) | '[1,2,null,3,null]' |
열거형 | 문자열 | jsonencode(matlab.lang.OnOffSwitchState.on) | '"on"' |
스칼라 MATLAB 객체를 ([]
문자로 묶인) 스칼라 JSON 배열로 전달하려면 셀형 배열 생성 연산자 {}
를 사용하여 객체를 변환하십시오. 예를 들어, 다음 코드는 features
필드의 값을 스칼라 JSON 배열로 변환합니다.
S = struct("features", struct("type", "Feature", "geometry",... struct("type", "point", "coordinates", [-105, 40]))); S.features = {S.features}; s = jsonencode(S)
s = '{"features":[{"type":"Feature","geometry":{"type":"point","coordinates":[-105,40]}}]}'