From 701afd2c7cafa7cc93ec1f52cebafe874cdd8360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 22 Nov 2023 17:24:31 +0100 Subject: [PATCH] Consolidate the routines for loading JSON files, now that jsondecode is always available --- matlab/convertjsondecode.m | 45 -------------------------------------- matlab/loadjson_.m | 28 +++++++++++++++++++----- 2 files changed, 22 insertions(+), 51 deletions(-) delete mode 100644 matlab/convertjsondecode.m diff --git a/matlab/convertjsondecode.m b/matlab/convertjsondecode.m deleted file mode 100644 index 4ed696289..000000000 --- a/matlab/convertjsondecode.m +++ /dev/null @@ -1,45 +0,0 @@ -function o = convertjsondecode(o) - -% Converts the output of jsondecode to be consistent with the output of loadjson. -% -% INPUTS -% - o [struct] Output of jsondecode. -% -% OUTPUTS -% - o [struct] Converted output of jsondecode. -% -% REMARKS -% The fields returned by the loadjson are systematically cell -% array, while jsondecode returns structure arrays if -% possible. This routine reorganize the data consistently with -% loadjson. - -% Copyright © 2020 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see . - -fnames = fieldnames(o); - -for i=1:length(fnames) - tmp = o.(fnames{i}); - if isstruct(tmp) && length(tmp)>1 - TMP = cell(length(tmp), 1); - for j=1:length(tmp) - TMP{j} = tmp(j); - end - o.(fnames{i}) = TMP; - end -end \ No newline at end of file diff --git a/matlab/loadjson_.m b/matlab/loadjson_.m index 6cbf10806..08b222d91 100644 --- a/matlab/loadjson_.m +++ b/matlab/loadjson_.m @@ -1,15 +1,17 @@ function o = loadjson_(jsonfilename) -% Reads a json file using jsondecode builtin. +% Reads a JSON file using jsondecode builtin. +% +% Returns the output in a format consistent with the output of the JSONlab +% toolbox, that we used to rely on (jsondecode builtin was introduced in MATLAB +% R2016b and in Octave 7). Now we no longer depend on JSONlab, but for +% historical reasons we still use its format. % % INPUTS % - jsonfilename [char] 1×n char array, name of the JSON file. % % OUTPUTS % - o [struct] content of the JSON file. -% -% REMARKS -% jsondecode builtin was introduced in MATLAB R2016b and in Octave 7. % Copyright © 2020-2023 Dynare Team % @@ -30,5 +32,19 @@ function o = loadjson_(jsonfilename) json = fileread(jsonfilename); -o = jsondecode(json); clear('json'); -o = convertjsondecode(o); +o = jsondecode(json); + +clear json + +fnames = fieldnames(o); + +for i=1:length(fnames) + tmp = o.(fnames{i}); + if isstruct(tmp) && length(tmp)>1 + TMP = cell(length(tmp), 1); + for j=1:length(tmp) + TMP{j} = tmp(j); + end + o.(fnames{i}) = TMP; + end +end