jsonencode
構造化された MATLAB データから JSON 形式のテキストを作成
説明
txt = jsonencode(
は、1 つ以上の名前と値のペアの引数を使用して、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) | '[]' |
logical スカラー | Boolean | jsonencode(true) | 'true' |
logical ベクトル | boolean の配列 | jsonencode([true,false,false]) | '[true,false,false]' |
logical 配列 | boolean の入れ子配列 | jsonencode(logical([0,1,0;1,1,0])) | '[[false,true,false],[true,true,false]]' |
文字ベクトル | string | jsonencode('This is a char.')
| '"This is a char."' |
文字配列 | string の配列 | jsonencode(['AC';'EG']) | '["AC","EG"]' |
string スカラー | string | jsonencode("This is a string.")
| '"This is a string."' |
string ベクトル | string の配列 | jsonencode(["AC";"EG"]) | '["AC","EG"]' |
string 配列 | string の入れ子配列 | jsonencode(["AC","EG";"BD","FH"]) | '[["AC","EG"],["BD","FH"]]' |
空の文字ベクトル | string | jsonencode('')
| '""' |
| ヌル | jsonencode(string(nan)) | 'null' |
数値スカラー | 数値 | jsonencode(2.5) | '2.5' |
数値ベクトル | 数字の配列 | jsonencode(1:3) | '[1,2,3]' |
数値配列 | 数値の入れ子配列 | jsonencode(eye(2)) | '[[1,0],[0,1]]' |
複素数 | サポートなし | ||
table | オブジェクトの配列 | Name = {'Jones';'Brown'}; Age = [40;49]; jsonencode(table(Name,Age)) | '[{"Name":"Jones","Age":40},{"Name":"Brown","Age":49}]' |
cell スカラー | 1 要素の配列 | jsonencode({5}) | '[5]' |
cell ベクトル | 配列 | jsonencode({'a',true,[2;3]})
| '["a",true,[2,3]]' |
cell 配列 | 1 次元にフラット化された配列 | 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 ベクトル | string の配列 | DT = datetime({'8 April 2015','9 May 2015'}, ... 'InputFormat','d MMMM yyyy'); jsonencode(DT) | '["08-Apr-2015","09-May-2015"]' |
datetime 配列 | string の入れ子配列 | 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 ベクトル | string の配列 | jsonencode(categorical({'r';'g';'b'})) | '["r","g","b"]' |
categorical 配列 | string の入れ子配列 | 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 | ヌル | jsonencode([1,2,NaN,3,Inf]) | '[1,2,null,3,null]' |
enumeration | string | jsonencode(matlab.lang.OnOffSwitchState.on) | '"on"' |
スカラーの MATLAB オブジェクトをスカラーの JSON 配列 ([]
文字で囲まれています) として渡すには、cell 配列構成演算子 {}
を使用してオブジェクトを変換します。たとえば、次のコードは 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]}}]}'