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