ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

jsonencode

構造化された MATLAB データから JSON 形式のテキストを作成

構文

text = jsonencode(data)
text = jsonencode(data,'ConvertInfAndNaN',TF)

説明

text = jsonencode(data)data をエンコードし、文字ベクトルを JSON 形式で返します。

text = jsonencode(data,'ConvertInfAndNaN',TF) は特殊浮動小数点値 NaN、Inf、-Inf のエンコードをカスタマイズします。

すべて折りたたむ

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

入力引数

すべて折りたたむ

MATLAB データ。サポートされている MATLAB データ型として指定します。詳細については、制限を参照してください。

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

特殊浮動小数点値 NaN、Inf および -Inf のエンコードをカスタマイズします。true または false として指定します。true 値を指定すると、浮動小数点値は null としてエンコードされます。false 値を指定すると、値はリテラルの NaNInfinity または -Infinity としてエンコードされます。

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

出力引数

すべて折りたたむ

JSON 形式のテキスト。文字ベクトルとして返されます。

制限

  • jsonencode は複素数、スパース配列または MATLAB 列挙型をサポートしません。オブジェクトには名前と値のペアとしてエンコードされたパブリック プロパティがなければならず、またオブジェクト プロパティで get メソッドが定義されていなければなりません。

  • jsonencode はグラフィックス オブジェクトなどの、親および子オブジェクトへの参照を含む再帰構造体をサポートしません。

  • 値をエンコードした後にデコードした場合、MATLAB ではデータ型が保持される保証はありません。JSON がサポートしているデータ型は MATLAB よりも少ないため、型情報が失われます。たとえば、JSON データでは doubleint32 が区別されません。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'

論理ベクトル

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('')
'""'

<missing>

ヌル

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

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

構造体スカラー
オブジェクト スカラー

オブジェクト
オブジェクト (パブリック プロパティを 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 ベクトル

string の配列

  

datetime 配列

string の入れ子配列

DT = datetime({'8 April 2015','9 May 2015'}, ...
    'InputFormat','d MMMM yyyy');
jsonencode(DT)
'["08-Apr-2015","09-May-2015"]'

カテゴリカル スカラー

文字列 (string メソッドを使用して文字列形式を作成)

jsonencode(categorical({'r';'g';'b'}))
'["r","g","b"]'

カテゴリカル ベクトル

string の配列

jsonencode(categorical( ...
    {'r' 'b' 'g'; ...
    'g' 'r' 'b'; ...
    'b' 'r' 'g'}))
'[["r","b","g"],["g","r","b"],["b","r","g"]]'

categorical 配列

string の入れ子配列

  

containers.Map

オブジェクト

jsonencode(containers.Map( ...
    {'Jan','Feb','Mar'}, ...
    [327,368,197]))
'{"Feb":368,"Jan":327,"Mar":197}'

NaN
Inf

ヌル

jsonencode([1,2,NaN,3,Inf])
'[1,2,null,3,null]'

スカラーの 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]}}]}'

R2016b で導入