Java Gson需要一个名称,但在第1行第492列是BEGIN_对象

Java Gson需要一个名称,但在第1行第492列是BEGIN_对象,java,json,gson,Java,Json,Gson,我在将数组从json转换为对象时遇到问题。例外情况是:应为名称,但在第1行第492列为BEGIN_对象 我搜索了论坛,但对于我发现的案例,没有一个有助于解决这个问题 这是将要分析的检查表: 这个JSON与通过Gson对象本身生成的JSON相同,我将两者都放在winmerge中,以检查是否有任何错误 这就是我如何转换为Json的方式: GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapterFactor

我在将数组从json转换为对象时遇到问题。例外情况是:应为名称,但在第1行第492列为BEGIN_对象

我搜索了论坛,但对于我发现的案例,没有一个有助于解决这个问题

这是将要分析的检查表:

这个JSON与通过Gson对象本身生成的JSON相同,我将两者都放在winmerge中,以检查是否有任何错误

这就是我如何转换为Json的方式:

    GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapterFactory(new ChecklistItemConverterAdapterFactory());              

    Gson convert = builder.excludeFieldsWithoutExposeAnnotation().create();
    return convert.toJson(actvChecklist);
并转换回清单对象:

    GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapterFactory(new ChecklistItemConverterAdapterFactory());              
    Gson convert = builder.excludeFieldsWithoutExposeAnnotation().create();
    CheckList answeredChecklist = convert.fromJson(checkListAnswer, CheckList.class);
完整堆栈如下所示:

为了使此转换正常工作,是否需要进行任何进一步的配置

这是转换器适配器工厂:

public class ChecklistItemConverterAdapterFactory implements TypeAdapterFactory {

@Override
public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> type) {
    Class<? super T> rawType = type.getRawType();
    if (rawType == CheckListItemFileType.class) {
        return new checklistItemFileTypeAdapter<>();
    }
    return null;
}

public class checklistItemFileTypeAdapter<T> extends TypeAdapter<T> {
    @Override
    public void write(JsonWriter out, T value) throws IOException {
        if (value == null) {
            out.nullValue();
            return;
        }
        CheckListItemFileType fileType = (CheckListItemFileType) value;
        // Here write what you want to the JsonWriter.
        out.beginObject();
        out.name("value");
        out.value(fileType.name());
        out.name("pattern");
        out.value(fileType.getPattern());
        out.endObject();
    }

    @Override
    public T read(JsonReader in) throws IOException {
        return null;
    }
}
公共类ChecklistItemConverterAdapterFactory实现TypeAdapterFactory{
@凌驾
公共类型适配器创建(最终Gson Gson,类型令牌类型){

ClassYour adapter可能没有对称地进行序列化/反序列化。我没有对读取部分给予足够的关注,我正在进行一些搜索,以找出如何正确创建它,因为它是一个复杂的对象。是的,问题完全在适配器中,在我实现缺少的部分后,它才起作用。