Main Content

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
  1. JSON でエンコードされた Person のインスタンスを表示します。

    obj = Person('Luke',19);
    jsonencode(obj)
    
    ans =
    
        '{"Name":"Luke"}'
  2. プライベート プロパティ Age を表示するには、jsonencode をカスタマイズしてクラス Personmethods ブロックに追加します。

    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 または文字ベクトルを返します。

  3. カスタマイズしたオブジェクトを表示します。

    obj = Person('Luke',19);
    jsonencode(obj)
    
    ans =
    
        '{"Name":"Luke","Age":19}'

参考