我是如何解决Java bean的SerializationFeature.FAIL\u ON\u EMPTY\u bean问题的?

我是如何解决Java bean的SerializationFeature.FAIL\u ON\u EMPTY\u bean问题的?,java,json,spring,Java,Json,Spring,我当时正在使用SpringMVC架构为我目前的项目编写代码。我的密码是 向第三方供应商发出POST REST Web服务调用 将XML响应作为XML返回 解析XML响应并 将其放入数据库表列中 我能够编写代码并进行测试,直到上面的第3点,但无法测试第4点,因为一旦插入数据并从DB检索数据,Spring MVC体系结构开始抛出以下错误: [http-nio-8080-exec-5] ERROR c.t.dl4.restapi.APIExceptionMapper - No serializer f

我当时正在使用SpringMVC架构为我目前的项目编写代码。我的密码是

  • 向第三方供应商发出POST REST Web服务调用
  • 将XML响应作为XML返回
  • 解析XML响应并
  • 将其放入数据库表列中
  • 我能够编写代码并进行测试,直到上面的第3点,但无法测试第4点,因为一旦插入数据并从DB检索数据,Spring MVC体系结构开始抛出以下错误:

    [http-nio-8080-exec-5] ERROR c.t.dl4.restapi.APIExceptionMapper - No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.HashMap["responseData"]->org.json.simple.JSONObject["javaBean"]->org.json.simple.JSONObject["coulmnName"]->org.json.simple.JSONObject["xmlNode"])
    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.HashMap["responseData"]->org.json.simple.JSONObject["javaBean"]->org.json.simple.JSONObject["coulmnName"]->org.json.simple.JSONObject["xmlNode"])
    
    调试后,我发现了这个问题,这是一个简单的铸造错误,我忘记考虑编码时。 带有错误的代码如下所示:

    if(RESPONSE.has("xmlNode") && !RESPONSE.get("xmlNode").equals("")) {
                    columenMap.put("xmlNode", RESPONSE.getJSONObject("xmlNode"));
                }
    
    JSONParser parser = new JSONParser();
    
    if(RESPONSE.has("xmlNode") && !RESPONSE.get("xmlNode").equals("")) {
        org.json.simple.JSONObject xmlNodeObj = (org.json.simple.JSONObject) parser.parse(RESPONSE.getJSONObject("xmlNode").toString());
    
        columenMap.put("xmlNode", xmlNodeObj);
                }
    
    问题是我试图将org.json.JSONObject对象转换为org.json.simple.JSONObject,这导致了失败

    解决方案是解析org.json.JSONObject中的值,然后将其转换为org.json.simple.JSONObject

    固定/更新代码如下:

    if(RESPONSE.has("xmlNode") && !RESPONSE.get("xmlNode").equals("")) {
                    columenMap.put("xmlNode", RESPONSE.getJSONObject("xmlNode"));
                }
    
    JSONParser parser = new JSONParser();
    
    if(RESPONSE.has("xmlNode") && !RESPONSE.get("xmlNode").equals("")) {
        org.json.simple.JSONObject xmlNodeObj = (org.json.simple.JSONObject) parser.parse(RESPONSE.getJSONObject("xmlNode").toString());
    
        columenMap.put("xmlNode", xmlNodeObj);
                }
    
    这修复了SerializationFeature.FAIL\u ON\u EMPTY\u bean的问题


    谢谢。

    如果您想共享解决方案,请将其添加为答案并接受该答案。如果您想共享解决方案,请将其添加为答案并接受该答案。