|
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