JSON 对象构建不正确
JSON Object is built incorrectly
我正在尝试从 SQL 获取数据。来自我的 Servlet 的数据被放入一个数组列表中。之后,我构建了一个 JSON 对象并将其传递到我的 JSP 文件。
现在我的浏览器接收对象真的很奇怪。
而且我只能调用其中的前三个。我试图用 for 循环从列表中获取所有内容,但这给了我一个错误。知道我做错了什么吗?
哦,我也不允许使用 JQuery。 :(
我的 JSON 是这样收到的:
{"id":"1GürtelA","kategorie":"2schuheS","oberkategorie":"3HoseB"}
但应该是:
{"id":"1", "kategorie":"Gürtel", "oberkategorie":"A"}
{"id":"2", "kategorie":"schuhe", "oberkategorie":"S"}
{"id":"3", "kategorie":"Hose", "oberkategorie":"B"}
这是我的 Servlet 的一部分:
List<KategorieBean> kategorien = displayKat();
HttpSession session = request.getSession();
session.setAttribute("kategorie", kategorien);
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
String resultJson = Json.createObjectBuilder()
.add("id", (kategorien.get(0).toString()))
.add("kategorie", (kategorien.get(1).toString()))
.add("oberkategorie", (kategorien.get(2).toString()))
.build()
.toString();
PrintWriter writer = response.getWriter();
writer.print(resultJson);
writer.flush();
这里是 toString
我不得不覆盖。
@Override
public String toString() {
return id + kategorie + oberK ;
// This method is in my Bean
}
您似乎正在使用 javax.json API,您的预期输出无效 JSON。
应该是一个数组:
[{"id":"1", "kategorie":"Gürtel", "oberkategorie":"A"},
{"id":"2", "kategorie":"schuhe", "oberkategorie":"S"},
{"id":"3", "kategorie":"Hose", "oberkategorie":"B"}]
要实现这一点,您需要修复 JSON 构建代码(假设您在 KategorieBean
class 中有适当的吸气剂):
JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
for (KategorieBean category : kategorien) {
JsonObjectBuilder itemBuilder = Json.createObjectBuilder();
arrayBuilder.add(
itemBuilder
.add("id", category.getId())
.add("kategorie", category.getKategorie())
.add("oberkategorie", category.getOberK())
.build()
);
}
String resultJson = arrayBuilder.build().toString();
此外,此代码将 return 所有 项放入类别列表中,而不仅仅是前三个。
我正在尝试从 SQL 获取数据。来自我的 Servlet 的数据被放入一个数组列表中。之后,我构建了一个 JSON 对象并将其传递到我的 JSP 文件。 现在我的浏览器接收对象真的很奇怪。
而且我只能调用其中的前三个。我试图用 for 循环从列表中获取所有内容,但这给了我一个错误。知道我做错了什么吗? 哦,我也不允许使用 JQuery。 :(
我的 JSON 是这样收到的:
{"id":"1GürtelA","kategorie":"2schuheS","oberkategorie":"3HoseB"}
但应该是:
{"id":"1", "kategorie":"Gürtel", "oberkategorie":"A"}
{"id":"2", "kategorie":"schuhe", "oberkategorie":"S"}
{"id":"3", "kategorie":"Hose", "oberkategorie":"B"}
这是我的 Servlet 的一部分:
List<KategorieBean> kategorien = displayKat();
HttpSession session = request.getSession();
session.setAttribute("kategorie", kategorien);
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
String resultJson = Json.createObjectBuilder()
.add("id", (kategorien.get(0).toString()))
.add("kategorie", (kategorien.get(1).toString()))
.add("oberkategorie", (kategorien.get(2).toString()))
.build()
.toString();
PrintWriter writer = response.getWriter();
writer.print(resultJson);
writer.flush();
这里是 toString
我不得不覆盖。
@Override
public String toString() {
return id + kategorie + oberK ;
// This method is in my Bean
}
您似乎正在使用 javax.json API,您的预期输出无效 JSON。
应该是一个数组:
[{"id":"1", "kategorie":"Gürtel", "oberkategorie":"A"},
{"id":"2", "kategorie":"schuhe", "oberkategorie":"S"},
{"id":"3", "kategorie":"Hose", "oberkategorie":"B"}]
要实现这一点,您需要修复 JSON 构建代码(假设您在 KategorieBean
class 中有适当的吸气剂):
JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
for (KategorieBean category : kategorien) {
JsonObjectBuilder itemBuilder = Json.createObjectBuilder();
arrayBuilder.add(
itemBuilder
.add("id", category.getId())
.add("kategorie", category.getKategorie())
.add("oberkategorie", category.getOberK())
.build()
);
}
String resultJson = arrayBuilder.build().toString();
此外,此代码将 return 所有 项放入类别列表中,而不仅仅是前三个。