Ich versuche, dieses JSON-Dokument zu analysieren:Parse JSON mit Vala
{
"registration" : "F-FBZH",
"model" : "DR400-120"
}
Dies ist, was ich gemacht:
public Plane load_airplane (string registration) {
try {
string? res = null;
var file = File.new_for_path (location + registration + ".json");
if (file.query_exists()) {
var dis = new DataInputStream (file.read());
string line;
while ((line = dis.read_line (null)) != null) {
res += line;
}
var parser = new Json.Parser();
parser.load_from_data (res);
var root_object = parser.get_root().get_object();
string data_registration = root_object.get_string_member ("registration");
string data_model = root_object.get_string_member ("model");
return new Plane (data_registration, data_model);
}
} catch (Error e) {
stderr.printf ("%s\n", e.message);
}
return new Plane.default();
}
Es problemlos kompilieren, aber wenn ich das Mittagessen das Programm I habe diese Fehler:
(process:25868): Json-CRITICAL **: json_parser_load_from_data: assertion 'data != NULL' failed
(process:25868): Json-CRITICAL **: json_node_get_object: assertion 'JSON_NODE_IS_VALID (node)' failed
(process:25868): Json-CRITICAL **: json_object_get_string_member: assertion 'object != NULL' failed
(process:25868): Json-CRITICAL **: json_object_get_string_member: assertion 'object != NULL' failed
** (process:25868): CRITICAL **: open_plane_plane_construct: assertion 'registration != NULL' failed
** (process:25868): CRITICAL **: open_plane_plane_get_registration: assertion 'self != NULL' failed
(null)
Warum? Eine andere Frage, warum ist es so schwer, einen JSON mit einer Mittelsprache, Vala, zu lesen? Es sollte viel einfacher sein!
Sie müssen keinen 'DataInputStream' verwenden, Sie können einfach' file.load_contents() 'aufrufen. –
Sie können auch 'Json.from_string()' verwenden, wenn Sie kürzlich ein 'valac'- und ein' json-glib-1.0'-Paket installiert haben. Es speichert auch einige LOCs. –