Es scheint möglich zu sein, das JSON-Format von MATLAB 2016b zu verarbeiten.
jsondecode
jsonencode
Bereiten Sie die folgenden Dateien vor und überprüfen Sie deren Verwendung.
test.json
[
{
"Null": null,
"Boolean": true,
"Numeric": 1,
"String": "string",
"Object": { "a": null, "b": true, "c": 1, "d": "string" },
"Array": [ null, true, 1, "string" ],
"BooleanArray": [ true, false],
"NumericArray": [ 1, 2, 3 ],
"StringArray": [ "foo", "buz" ],
"ObjectArrayS": [ { "a": 1, "b": "one" }, { "a": 2, "b": "two" } ],
"ObjectArrayC": [ { "a": 1, "b": "one" }, { "x": 9, "y": true } ]
}
]
: one: JSON-Datei lesen
Verwenden Sie ** jsondecode **
>> json = jsondecode(fileread('test.json'))
json =
Struktur mit Feld:
Null: []
Boolean: 1
Numeric: 1
String: 'string'
Object: [1×1 struct]
Array: {4×1 cell}
BooleanArray: [2×1 logical]
NumericArray: [3×1 double]
StringArray: {2×1 cell}
ObjectArrayS: [2×1 struct]
ObjectArrayC: {2×1 cell}
: two: Codieren Sie strukturierte MATLAB-Daten als Text im JSON-Format
Verwenden Sie ** jsonencode **.
Die Ausgabe dieser Funktion ist eine Zeichenfolge, die ein einzeiliges JSON-Objekt darstellt.
Es ist zu beachten, dass "jsonencode" nicht null ausgeben kann.
| JSON | MATLAB | MATLAB | JSON | |||
|---|---|---|---|---|---|---|
| null | :arrow_right: | [] | [] | :arrow_right: | [] |
>> jsonencode(json)
ans =
'{"Null":[],"Boolean":true,"Numeric":1,"String":"string","Object":{"a":[],"b":true,"c":1,"d":"string"},"Array":[[],true,1,"string"],"BooleanArray":[true,false],"NumericArray":[1,2,3],"StringArray":["foo","buz"],"ObjectArrayS":[{"a":1,"b":"one"},{"a":2,"b":"two"}],"ObjectArrayC":[{"a":1,"b":"one"},{"x":9,"y":true}]}'
Verwenden Sie Datei-E / A auf niedriger Ebene, um Textdateien zu schreiben.
>> fileID = fopen('test2.json', 'w');
>> fprintf(fileID, jsonencode(json));
>> fclose(fileID);
Leider unterstützt die aktuelle Version von matlab die JSON-Formatierung nicht.
Formatieren Sie daher die von matlab ausgegebene JSON-Datei mit Pythons json.tool.
Es ist etwas schlampig, aber wenn Sie eine Umgebung haben, in der Sie Python in der Befehlszeile ausführen können, können Sie Python auch in der Matlab-Konsole ausführen.
https://jp.mathworks.com/help/matlab/matlab_external/run-external-commands-scripts-and-programs.html
>> !python -m json.tool test2.json test3.json
test3.json
{
"Null": [],
"Boolean": true,
"Numeric": 1,
"String": "string",
"Object": {
"a": [],
"b": true,
"c": 1,
"d": "string"
},
"Array": [
[],
true,
1,
"string"
],
"BooleanArray": [
true,
false
],
"NumericArray": [
1,
2,
3
],
"StringArray": [
"foo",
"buz"
],
"ObjectArrayS": [
{
"a": 1,
"b": "one"
},
{
"a": 2,
"b": "two"
}
],
"ObjectArrayC": [
{
"a": 1,
"b": "one"
},
{
"x": 9,
"y": true
}
]
}
Die Position des Zeilenumbruchs ist geringfügig unterschiedlich, kann jedoch mit Ausnahme von ** null ** reproduziert werden.
Die Schwierigkeit besteht darin, dass eine Zwischendatei (test2.json) generiert wird.
Die Daten, die von MATLAB und JSON dargestellt werden können, sind nicht vollständig kompatibel. Beachten Sie beim Ausdrücken von Daten Folgendes, um die Kompatibilität mit MATLAB-Variablen zu gewährleisten. https://jp.mathworks.com/help/mps/restfuljson/json-representation-of-matlab-data-types.html Das Lesen für dieses Format scheint jedoch nicht implementiert zu sein.
Recommended Posts