MATLAB クラス用 JSON エンコードのカスタマイズ
次の例では、関数 jsonencode
をユーザー定義 MATLAB® クラス用にカスタマイズする方法を説明します。
このクラス Person.m
にはパブリック プロパティ Name
とプライベート プロパティ Age
があります。jsonencode
を呼び出してデータをエンコードすると、この関数はパブリック プロパティのみを変換します。
classdef Person properties Name; end properties (Access = private) Age; end methods function obj = Person(name,age) obj.Name = name; obj.Age = age; end end end
JSON でエンコードされた
Person
のインスタンスを表示します。obj = Person('Luke',19); jsonencode(obj)
ans = '{"Name":"Luke"}'
プライベート プロパティ
Age
を表示するには、jsonencode
をカスタマイズしてクラスPerson
のmethods
ブロックに追加します。classdef Person properties Name; end properties (Access = private) Age; end methods function obj = Person(name,age) obj.Name = name; obj.Age = age; end end function json = jsonencode(obj, varargin) s = struct("Name", obj.Name, "Age", obj.Age); json = jsonencode(s, varargin{:}); end end
関数のシグネチャは
jsonencode
のシグネチャと一致しなければなりません。これはクラス オブジェクトを入力として取り、JSON 形式の string または文字ベクトルを返します。カスタマイズしたオブジェクトを表示します。
obj = Person('Luke',19); jsonencode(obj)
ans = '{"Name":"Luke","Age":19}'