如何将JSON数据插入数据库

时间:2019-06-11 08:33:07

标签: java json servlets

通过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"}]}

现在我想像This

一样将其存储在我的数据库中

我是否需要解析此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]);

2 个答案:

答案 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
}

准备好这些类之后,就可以使用JacksonGSON库了。请看一下Jackson here和GSON serializationdeserialization的用法示例。

侧注

我建议重新考虑设计本身。例如。字段的命名和实体的逻辑极具误导性(诸如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中的所有元素重复以上操作。