Il semble qu'il soit possible de gérer le format JSON à partir de MATLAB 2016b.
jsondecode
jsonencode
Préparez les fichiers suivants et vérifiez comment les utiliser.
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: Lire le fichier JSON
Utilisez ** jsondecode
**
>> json = jsondecode(fileread('test.json'))
json =
Struct avec champ:
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: Encode des données MATLAB structurées sous forme de texte au format JSON
Utilisez ** jsonencode
**.
La sortie de cette fonction est une chaîne représentant un objet JSON sur une ligne.
Il convient de noter que jsonencode
ne peut pas afficher null.
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}]}'
Utilisez les E / S de fichier de bas niveau pour écrire des fichiers texte.
>> fileID = fopen('test2.json', 'w');
>> fprintf(fileID, jsonencode(json));
>> fclose(fileID);
Malheureusement, la version actuelle de matlab ne prend pas en charge le formatage JSON.
Par conséquent, utilisez json.tool
de python pour formater la sortie du fichier JSON par matlab.
C'est un peu bâclé, mais si vous avez un environnement dans lequel vous pouvez exécuter python sur la ligne de commande, vous pouvez également exécuter python sur la console matlab.
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
}
]
}
La position du saut de ligne est légèrement différente, mais elle peut être reproduite sauf pour ** null
**.
La difficulté est qu'un fichier intermédiaire (test2.json
) est généré.
Les données qui peuvent être représentées par MATLAB et JSON ne sont pas totalement compatibles. Reportez-vous à ce qui suit lors de l'expression de données afin de maintenir la compatibilité avec les variables MATLAB. https://jp.mathworks.com/help/mps/restfuljson/json-representation-of-matlab-data-types.html Cependant, la lecture pour ce format ne semble pas être mise en œuvre.
Recommended Posts