Gson预计名称,但在第1栏第492栏是BEGIN_OBJECT

时间:2015-06-03 17:02:27

标签: java json gson

将数组从json转换为object时出现问题。例外情况是:预期名称,但在第1行第492行是BEGIN_OBJECT

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

这是将要解析的核对表:http://pastebin.com/9kyk6hmu

这个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);

完整筹码位于:http://pastebin.com/vhLGG0mV

是否还需要进行其他配置才能使此转换正常工作?

这是转换器curstom适配器工厂:

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;
    }
}

0 个答案:

没有答案