【问题标题】:Java object to Json not working using Jackson Object MapperJson的Java对象无法使用Jackson Object Mapper工作
【发布时间】:2020-08-12 03:07:06
【问题描述】:

所以从长远来看,我正在尝试用 Java 为我的顶点项目编写一个提醒应用程序。现在我正在尝试将一些代码写入 json 文件,以便我可以保存信息,但我遇到了这个异常。我将 jar 文件导入到我的项目中,所以我不确定为什么它似乎无法访问它。我能做些什么来解决这个问题吗?

Heres my java build path for the project. 我正在使用 eclipse,由于某种原因它有这个模块路径和类路径。我不知道两者之间的区别,但是如果我将 jar 放在模块路径中,它就会出错。

package util;

import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class JsonUtil {
    private static ObjectMapper mapper;
    static {
        mapper = new ObjectMapper();
    }
    public static String convertJavaToJson(Object object)
    {
        String jsonResult = "";
        try {
            jsonResult = mapper.writeValueAsString(object);
        } 
        catch (JsonGenerationException e) {
            System.out.println("1 Exception Occured while converting Java Object into Json -->" + e.getMessage());
        }
        catch (JsonMappingException e) {
            System.out.println("2 Exception Occured while converting Java Object into Json -->" + e.getMessage());
        }
        catch (IOException e) {
            System.out.println("3 Exception Occured while converting Java Object into Json -->" + e.getMessage());
        }
        catch (Exception e) {
            System.out.println("4 Exception Occured while converting Java Object into Json -->" + e.getMessage());
        }
        return jsonResult;
    }
}

异常来自最终的 catch 块

4 Exception Occured while converting Java Object into Json -->Failed to instantiate standard serializer (of type org.codehaus.jackson.map.ser.std.NullSerializer): class org.codehaus.jackson.map.ser.BasicSerializerFactory cannot access a member of class org.codehaus.jackson.map.ser.std.NullSerializer with modifiers "private"

感谢任何帮助!

【问题讨论】:

  • 你尝试转换什么样的对象?
  • org.codehaus.jackson?那不是很古老的图书馆吗?我认为您应该使用的是com.fasterxml.jackson。另见org.codehaus.jackson versus com.fasterxml.jackson.core
  • 看看这个问题org.codehaus.jackson versus com.fasterxml.jackson.core。接下来,打开Jackson Databind » 2.11.0 并下载它的依赖项:jackson-annotationsjackson-core。去掉旧的jars,附上这3个。最后,不过应该是刚开始,需要学习使用Maven
  • 感谢大家的帮助!我不知道我使用的杰克逊是旧的,但这是有道理的,因为我要关闭旧的 YT 视频。我遇到了一个新异常,但我认为它是针对我的对象(这是一个自定义类,用于使用 localdatetime 的提醒事件)

标签: java json eclipse jackson


【解决方案1】:

这段代码对我有用,但我有这个导入:

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

因为我使用了依赖 com.fasterxml.jackson.core:jackson-databind(版本 2.9.9.3)。

正如 Lino 所说,org.codehaus.jackson 有点老了。

另外,你可以改变:

private static ObjectMapper mapper;
    static {
        mapper = new ObjectMapper();
    }

作者:

private static ObjectMapper mapper = new ObjectMapper();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 2017-07-22
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2015-12-23
    • 2019-08-21
    • 2021-05-27
    相关资源
    最近更新 更多