通过ajax从我的UI中,我正在获取一个JSON数据,我试图将其插入数据库中,对此我不知道该怎么做,我知道如何使用{{1} },但在JSON情况下,我完全感到困惑
这是我在doPost中获取的JSON
prepared statements
servlet代码->
{"ImageData":[{"Counter":"Counter A","Name":"CountA1.jpg","IsActive":"Y"},{"Counter":"Counter A","Name":"CountA2.jpg","IsActive":"Y"}]}
一样将其存储在我的数据库中
我是否需要解析此JSON,我该怎么做protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Scanner scanner = new Scanner(request.getInputStream());
String imageData = scanner.nextLine();
System.out.println(imageData);
}
,我什么都不知道
编辑/更新
作为 @Anjana Senanayake 的答案,我正在这样做
ps.setInt(index, 0);
但是它在 protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Scanner scanner = new Scanner(request.getInputStream());
String imageData = scanner.nextLine();
System.out.println(imageData);
JSONObject jsonObj = new JSONObject(imageData);
JSONArray jsonArray = jsonObj.getJSONArray("ImageData");
JSONObject innerObj = new JSONObject(jsonArray); // this one is throwing error
// eror is `The type of the expression must be an array type but it resolved to JSONArray`
String counter = innerObj.getString("Counter");
String name = innerObj.getString("Name");
String isActive = innerObj.getString("IsActive");
System.out.println(counter);
}
处抛出错误,错误是JSONObject innerObj = new JSONObject(jsonArray[0]);
答案 0 :(得分:2)
您在这里有几种选择。这取决于您要实现的目标:)
将其另存为字符串。您将必须使用String
对象创建一个新类,然后将JSON数据放入此对象并保存。
我意识到它不起作用,因为它不是您真正想要的:)
使用所有字段创建一个新类。
// File: ImageData.java
public class ImageData {
private String counter;
private String name;
private String isActiveJpg;
// getters and setters
}
// File: Data.java
public class Data {
private List<ImageData> imageDataList;
// getters and setters
}
准备好这些类之后,就可以使用Jackson或GSON库了。请看一下Jackson here和GSON serialization和deserialization的用法示例。
我建议重新考虑设计本身。例如。字段的命名和实体的逻辑极具误导性(诸如isActiveJpg
之类的东西。它应该是Set
,它应具有更好的命名方式,例如isJpg
之类的东西)
答案 1 :(得分:1)
使用org.json库解析它并创建JsonObject:-
JSONObject jsonObj = new JSONObject(imageData);
JSONArray jsonArray = jsonObj.getJSONArray("ImageData");
现在,使用此对象获取值:-
JSONObject innerObj = new JSONObject(jsonArray[0]);
String counter = innerObj.getString("Counter");
String name = innerObj.getString("Name");
String isActive = innerObj.getString("IsActive");
由于它是一个对象数组,因此您需要对jsonObj中的所有元素重复以上操作。