JsonNumber有问题

时间:2014-01-20 16:41:26

标签: java json

首先,对不起代码。它包含荷兰语单词

我在从JSON字符串中检索数据时遇到了麻烦。

考虑我要POST到我的webservice的这个JSON字符串:

{ "username" : "johndoe", "passwoord" : "password", "voornaam":"John", "achternaam":"Doe", "klassen" : [{ "id" : 1 }, { "id" : 2 }, { "id" : 3 }] }

我有一个班级Leerkracht(老师)和一个班级Klas(这也被称为英语课程,这可能会引起一些混乱,所以我会把它称为一个年级)。 每位教师都可以分多年级授课,每个年级可以有多位教师。 这被映射为多对多的关系。

现在,当我想用​​我的POST方法添加老师时,我希望能够发送他必须教授的成绩。这是JSON字符串中的"klassen" : [{ "id" : 1 }, { "id" : 2 }, { "id" : 3 }]部分。

成绩由ID标识。所以我希望能够用同一个JSON字符串中的老师发送成绩。

一切顺利,除非我想阅读这些ID。

我使用JsonReader和JsonObject(来自Java EE 7)来读取我的JSON字符串。

这是我想要读取数组klassen并获取每个ID并将其存储在Klas类的实例中的部分。

JsonReader reader = Json.createReader(entityStream);
JsonObject jsonLeerkracht = reader.readObject();
List<Klas> klassen = new ArrayList<Klas>();
Klas klas = new Klas();

JsonArray jsonArray = jsonLeerkracht.getJsonArray("klassen");
for (int i = 0; i < jsonArray.size(); i++) {
    JsonNumber jsonId = jsonLeerkracht.getJsonNumber("id");
    if (jsonId != null) {
        int id = jsonId.intValue();
    }
    klassen.add(klas);
}

一切顺利,直到我想从数组中获取id。 当我向jsonArray显示System.out.println(jsonArray)时,我明白了这一点:

[{"id":1},{"id":2},{"id":3}]

所以我觉得这很好用。它有一个很好的JSON字符串存储在其中。

接下来,当我使用System.out.println(jsonArray.get(i))时,它会向我展示每个人id

{"id":1}
{"id":2}
{"id":3}

所以这也像魅力一样。

但不知何故,我无法检索存储在JSON字符串的id部分中的int。

JsonNumber jsonId = jsonLeerkracht.getJsonNumber("id");应该这样做,但它会抛出NullPointerException

我认为JsonNumber jsonId = jsonLeerkracht.getJsonNumber("id");没有指向JSON字符串中的id,但经过数小时的研究后,我仍然没有找到如何做到这一点。

你们中的任何人可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

jsonLeerkracht似乎是您的JsonObject。它包含名为usernamepasswoordvoornaamachternaamklassen的元素。它不包含名为id的元素。因此您无法使用

检索它
jsonLeerkracht.getJsonNumber("id");

这是包含JSON对象的JSON数组,该对象具有id元素作为JSON编号。

修改

像这样检索

for (int i = 0; i < jsonArray.size(); i++) {
    JsonNumber number = jsonArray.getJsonObject(i).getJsonNumber("id");
}