Я пытаюсь разобрать этот JSON документ:Анализировать JSON с Валом
{
"registration" : "F-FBZH",
"model" : "DR400-120"
}
Это то, что я сделал:
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();
}
Он компилируется без каких-либо проблем, но когда я обед программы I были получены следующие ошибки:
(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)
Почему? Другой вопрос, почему трудно читать JSON со средним языком, Вала? Это должно быть намного проще!
Вам не нужно использовать 'DataInputStream', вы можете просто вызвать' file.load_contents() '. –
Вы также можете использовать 'Json.from_string()', если у вас установлены последние пакеты 'valac' и' json-glib-1.0'. Это также сэкономит вам некоторые LOC. –