Lesen JSON-Objekte mit Matlab
Will ich Lesen aus einer json-Datei mit Matlab und speichern alles, was in "Daten" - Objekte. Nach dem import, muss ich Durchlaufen alle und extrahieren bestimmte Werte, wenn es in das Objekt.
JSON (Quelle):
{
"eid": 44000,
"dpm_id": {
"dpm": "fm",
"pwr": "main"
},
"fpga_id": 3189637128,
"fpga_ver": 3104379702,
"boot_id": 0,
"pbs_ver": "PBS 2012-05-07 16:41"
}
{
"sid": 1,
"hk1": {
"bela_mode": "pbs_mode",
"pbs_version": "version 1.3",
"scet": "2038-01-19T03:14:08",
"ref_time": "0:00:00",
"tc_received": 2,
"tc_exec": 2,
"tc_err_ack": 0,
"tc_err_exec": 1,
"tm_total": 1,
"tm_sent": 1,
"tm_dropped": 0,
....
Matlab (import, laut dieser website, resp. Klasse):
fname = 'FileName.json';
fid = fopen(fname);
raw = fread(fid,inf);
str = char(raw');
fclose(fid);
data = JSON.parse(str)
Problem/Frage:
Wie Sie sehen, Matlab liest nur den Inhalt der ersten Konsolen/Feld. Wie kann ich die importieren, ALLE Halterungen/Felder, auch wenn ich nicht weiß, wie viele es sind?
data =
eid: 44000
dpm_id: [1x1 struct]
fpga_id: 3.1896e+09
fpga_ver: 3.1044e+09
boot_id: 0
pbs_ver: 'PBS 2012-05-07 16:41'
Danke!
- Schauen Sie hier: iso2mesh.sourceforge.net/cgi-bin/index.cgi?jsonlab Quelle hier: github.com/fangq/jsonlab
- Einige Möglichkeiten zum Parsen von json: undocumentedmatlab.com/blog/json-matlab-integration
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen zu Lesen versucht, eine json-Datei, die nicht gültig ist. Ich empfehle die Verwendung jsonlint für eine schnelle überprüfung.
Ihre json sieht wie
Dies ist keine gültige syntax, da es beschreibt zwei Objekte. Nach der ersten
}
der parser erwartet, dass das Ende der Datei, weil eine json-Datei enthält ein Objekt.Möglichen Korrekturen sind:
oder
Wenn Ihre Datei zugänglich über
http
oderhttps
verwenden, können Sie diewebread
Funktion aus derData Import and Export
toolbox. Es wandelt automatisch JSON-Dateien in Matlab-Strukturen.Es ist ein
decodeJSON
- Funktion in der toolbox (MATLABROOT/toolbox/matlab/external/interfaces/webservices/restful/private/decodeJSON.m
), aber die Hilfe, die klar besagt, dass:Dennoch können Sie Holen Sie sich inspiration in die Inhalte, bauen Sie Ihre eigene Lösung. Es ist schade, dass the Mathworks hat nicht aus diesem Programm zur Verfügung außerhalb der toolbox.
Besten
Könnte man versuchen, die Analyse mit einem anderen json-Bibliothek, wie diese Datei exchange.
Alternativ könnten Sie versuchen, einige der Methoden aufgeführt, die auf diese Website, wie mit Hilfe von matlab-Java und .Netzintegration und laden mit einem json-Bibliotheken.
Als eine Dritte alternative, da die Methode, die Sie haben oben gezeigt wird fröhlich laden Sie das erste Objekt in der Zeichenfolge, könnte man immer tun, einige manuelle pre-Parsen der string in ein cell array of strings mit einem einzigen Objekt in jedem, und dann analysieren diese.
Wenn Sie einfach nur Lesen wollen ganze JSON-Dateien in MATLAB und habe ein C++11-compiler, können Sie das sehr schnell json_read mex-Funktion.