2015-08-03 20 views
0

我試圖讓使用傑克遜,但得到的異常喜歡這個JSON對象檢索JSON對象:如何從數據庫中的Java

SEVERE: Servlet.service() for servlet [JsonProcessor] in context with path [/JJS2] threw exception [Servlet execution threw an exception] with root cause 
java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonGenerator.setCurrentValue(Ljava/lang/Object;)V 

下面是Java代碼:

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     JSONObject jsonResponse = new JSONObject(); 
     List<Map<String, Object>> result = new ArrayList<>();// JDK7++ 

     try { 
      JSONArray data = new JSONArray(); 
      Connection con = OracleDBConnection.getConnection(); 
      String query = "Select * from JJS"; 
      Statement st = con.createStatement(); 
      ResultSet rSet = st.executeQuery(query); 

      while (rSet.next()) { 
       Map<String, Object> row = new HashMap<>(); 
       row.put("JSON_Diagram", rSet.getString("JSON_INFO")); 
       result.add(row); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     ObjectMapper mapper = new ObjectMapper(); 
     try { 
      response.getWriter().write(mapper.writeValueAsString(result)); 
      response.getWriter().flush(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

這裏是在JSON樣本數據庫:

{"cells": 
[{"type":"basic.Rect","position":{"x":-2,"y":33}, 
"size":{"width":71,"height":625},"angle":0,"isInteractive":false, 
"id":"a55845b6-b753-42f0-b361-f0fcd3eaa611","z":1, 
"attrs":{"rect":{"fill":"#EEEEEE","stroke":"#008B8B","stroke-width":2}, 
".":{"magnet":false}}} 

該數據庫只有一列json數據。

+3

提供完整的堆棧跟蹤。但在我看來,像在webapp中的圖書館版本衝突。 –

回答

1

您在jackson-core(流媒體,低級別編碼器/解碼器)和jackson-databind(對象映射)之間有版本不兼容。很可能你有2.6的jackson-databind,但有些早期版本的jackson-core。這些組件的次要版本必須匹配;或至少jackson-databind次版本不能以後jackson-core版本。

+0

通過卸下傑克遜罐來修復它。我錯了兩個版本 – JCoder999

相關問題