Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

jsonencode

구조화된 MATLAB 데이터에서 JSON 형식의 텍스트 생성

설명

예제

txt = jsonencode(data)data를 인코딩하고 문자형 벡터를 JSON 형식으로 반환합니다.

txt = jsonencode(data,'ConvertInfAndNaN',TF)는 특수 부동소수점 값 NaN, Inf, -Inf의 인코딩을 사용자 지정합니다.

예제

모두 축소

value = {'one'; 'two'; 'three'};
jsonencode(value)
ans = 
'["one","two","three"]'

jsonencode는 속성이 없는 열거형을 string형으로 인코딩합니다.

on = matlab.lang.OnOffSwitchState.on;
jsonencode(on)
ans =

    '"on"'

기본적으로 jsonencode는 속성이 있는 열거형을 JSON 문자열로 인코딩합니다. 이 동작을 사용자 지정할 수 있습니다.

열거형 클래스에 속성 정의하기에 나온 SyntaxColors 클래스를 propertiesenumeration을 사용하여 만듭니다.

jsonencode는 열거형을 JSON 문자열로 인코딩합니다.

jsonencode(SyntaxColors.Error)
ans =

    '"Error"'

사용자 지정된 jsonencode 함수를 추가합니다. 함수는 MATLAB® jsonencode 함수와 동일한 시그니처를 가져야 합니다. 즉 클래스의 객체인 단일 입력값을 갖고 유효한 JSON 문자열인 단일 출력값을 반환해야 합니다. 업데이트된 methods 블록은 다음과 같습니다.

methods
    function c = SyntaxColors(r, g, b)  
        c.R = r; c.G = g; c.B = b;
    end
    function json = jsonencode(obj)
        s = struct('R', obj.R, 'G', obj.G, 'B', obj.B);
        json = jsonencode(s);
    end
end

SyntaxColors에 정의된 jsonencode를 호출합니다.

jsonencode(SyntaxColors.Error)
ans =

    '{"R":1,"G":0,"B":0}’

구조체를 만들고 인코딩된 값을 표시합니다.

s = struct('Error', error);
jsonencode(s)
ans =

    '{"Error":{"R":1,"G":0,"B":0}}'

입력 인수

모두 축소

MATLAB 데이터로, 지원되는 임의의 MATLAB 데이터형으로 지정됩니다. 자세한 내용은 제한 사항 항목을 참조하십시오. 열거형에 대해 jsonencode를 사용자 지정하는 방법에 대한 자세한 내용은 속성이 있는 인코딩된 열거형 사용자 지정하기 항목을 참조하십시오.

예: s.IDs = [116, 943, 234, 38793]

특수 부동소수점 값 NaN, Inf, -Inf의 인코딩을 사용자 지정하는 것으로, true 또는 false로 지정됩니다. true 값은 이런 부동소수점 값을 null로 인코딩합니다. false 값은 값을 리터럴 NaN, Infinity, -Infinity 중 하나로 인코딩합니다.

예: jsonencode(-Inf,'ConvertInfAndNaN',false)

제한 사항

  • jsonencode는 복소수 숫자나 희소 배열을 지원하지 않습니다. 객체는 객체 속성에 정의된 get 메서드를 사용하여 이름-값 쌍으로 인코딩된 퍼블릭 속성을 가져야 합니다.

  • jsonencode는 부모 객체와 자식 객체에 대한 참조가 들어 있는 그래픽스 객체와 같은 재귀적 구조체를 지원하지 않습니다.

  • 어떤 값을 인코딩한 후 디코딩하는 경우 MATLAB이 그 데이터형을 유지한다는 보장은 없습니다. JSON은 MATLAB보다 지원하는 데이터형 개수가 적기 때문에, 데이터형 정보가 손실됩니다. 예를 들어, JSON 데이터는 double형과 int32형을 구분하지 않습니다. int32형 값을 인코딩한 다음 jsondecode를 호출하는 경우, 디코딩된 값은 double형입니다.

  • MATLAB이 배열의 형태를 그대로 보존한다는 보장은 없습니다. 예를 들어, 1xN 숫자형 벡터는 배열로 인코딩됩니다. jsondecode를 호출하는 경우 MATLAB은 이 배열을 Nx1 벡터로 디코딩합니다.

  • 새 줄 이스케이프 문자 \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('')
'""'

<missing>

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

구조체형 스칼라
객체 스칼라

객체
객체(퍼블릭 속성은 name-value 쌍으로 인코딩됨)

jsonencode(struct('a','value'))
'{"a":"value"}'

구조체형 벡터
객체 벡터

객체로 구성된 배열

jsonencode(struct('a',{true,true,false}))
'[{"a":true},{"a":true},{"a":false}]'

구조체형 배열
객체 배열

객체로 구성된 중첩 배열

  

datetime형 스칼라

문자열(string 메서드는 날짜/시간을 문자열 형식으로 변환하는 데 사용됨)

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형 스칼라

문자열(string 메서드는 문자열 형식을 만드는 데 사용됨)

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
Inf

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

호환성 관련 고려 사항

모두 확장

R2017b에서 동작이 변경됨

참고 항목

|

R2016b에 개발됨