|
3 | 3 | valstr = struct2json(val);
|
4 | 4 | elseif iscell(val)
|
5 | 5 | valstr = cell2json(val);
|
6 |
| - elseif isa(val, 'numeric') |
| 6 | + elseif isa(val, "numeric") |
7 | 7 | sz = size(val);
|
| 8 | + if isa(val,"single") |
| 9 | + precision = "7"; |
| 10 | + else |
| 11 | + precision = "15"; |
| 12 | + end |
| 13 | + fmt = "%." + precision + "g,"; |
8 | 14 | if length(find(sz>1))>1 % 2D or higher array
|
9 |
| - valstr = ''; |
| 15 | + valstr = ""; |
10 | 16 | for i = 1:sz(1)
|
11 |
| - valsubstr = [sprintf('%.15g, ', val(i,:))]; |
12 |
| - valsubstr = valsubstr(1:(end-2)); |
13 |
| - valstr = [valstr ', [' valsubstr ']']; |
| 17 | + valsubstr = sprintf(fmt, val(i,:)); |
| 18 | + valsubstr = valsubstr(1:(end-1)); |
| 19 | + valstr = valstr + ", [" + valsubstr + "]"; |
14 | 20 | end
|
15 | 21 | valstr = valstr(3:end); % trail leading commas
|
16 | 22 | else
|
17 |
| - valstr = [sprintf('%.15g, ', val)]; |
18 |
| - valstr = valstr(1:(end-2)); |
| 23 | + valstr = [sprintf(fmt, val)]; |
| 24 | + valstr = valstr(1:(end-1)); |
19 | 25 | end
|
20 | 26 | if length(val)>1
|
21 |
| - valstr = ['[' valstr ']']; |
22 |
| - elseif length(val) == 0 |
23 |
| - valstr = '[]'; |
| 27 | + valstr = "[" + valstr + "]"; |
| 28 | + elseif isempty(val) |
| 29 | + valstr = "[]"; |
24 | 30 | end
|
25 |
| - valstr = strrep(valstr,'-Inf', 'null'); |
26 |
| - valstr = strrep(valstr, 'Inf', 'null'); |
27 |
| - valstr = strrep(valstr, 'NaN', 'null'); |
| 31 | + valstr = strrep(valstr,"-Inf", "null"); |
| 32 | + valstr = strrep(valstr, "Inf", "null"); |
| 33 | + valstr = strrep(valstr, "NaN", "null"); |
28 | 34 | elseif ischar(val)
|
29 | 35 | [r, ~] = size(val);
|
30 | 36 | % We can't use checkescape() if we have ['abc'; 'xyz']
|
31 | 37 | if r > 1
|
32 | 38 | valstr = cell2json(cellstr(val));
|
33 | 39 | else
|
34 |
| - val = checkescape(val); %add escape characters |
35 |
| - valstr = ['"' val '"']; |
| 40 | + val = checkescape(val); % add escape characters |
| 41 | + valstr = sprintf('"%s"', val); |
36 | 42 | end
|
37 | 43 | elseif islogical(val)
|
38 | 44 | if val
|
39 |
| - valstr = 'true'; |
| 45 | + valstr = "true"; |
40 | 46 | else
|
41 |
| - valstr = 'false'; |
| 47 | + valstr = "false"; |
42 | 48 | end
|
43 | 49 | elseif isdatetime(val)
|
44 | 50 | valstr = m2json(convertDate(val));
|
45 | 51 | elseif isstring(val)
|
46 |
| - fh = ifel(isscalar(val),@char,@cellstr); |
| 52 | + if isscalar(val) |
| 53 | + fh = @char; |
| 54 | + else |
| 55 | + fh = @cellstr; |
| 56 | + end |
47 | 57 | valstr = m2json(fh(val));
|
48 | 58 | else
|
49 |
| - valstr = ''; % wtf is it? |
50 |
| - warning("Failed to m2json encode class of type: %s",class(val)); |
| 59 | + valstr = ""; |
| 60 | + warning("Failed to m2json encode class of type: %s", class(val)); |
51 | 61 | end
|
| 62 | +end |
0 commit comments