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