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]}}]}'