这3种方法可以概括为1种方法

时间:2018-04-13 08:25:51

标签: java json code-duplication generalization

我有以下3种方法。我只是没有线索将它们作为一个,因为它们是数组,列表或只是一个对象的类型。这些方法只是将给定对象转换为json字符串,然后将其转换为给定的指定类。

public static List<Object> objectListSerializer(List<Document> documents, Class entity) {
    List<Object> entityList;

    String json = com.mongodb.util.JSON.serialize(documents);

    entityList = (List<Object>) GSON_INSTANCE.fromJson(json, entity);

    return entityList;
}

public static Object objectArraySerializer(Object objectArray, Class clazz) {
    String jsonString = GSON_INSTANCE.toJson(objectArray);

    Object convert[] = (Object[]) GSON_INSTANCE.fromJson(jsonString, clazz);

    return convert;

}


public static Object objectSerializer(Object object, Class clazz) {
    String jsonString = GSON_INSTANCE.toJson(object);

    Object convert = GSON_INSTANCE.fromJson(jsonString, clazz);

    return convert;
}

1 个答案:

答案 0 :(得分:0)

基本上,您可以编写一个方法,其中包含对象类型的一些情况,如以下几行。

public static Object serialize(Object object, Class<?> entity) {
    String jsonString = null;

    if (object instanceof List) {    
        jsonString = com.mongodb.util.JSON.serialize((List<?>) object);
        return (List<?>) GSON_INSTANCE.fromJson(jsonString, entity);
    } else {
        jsonString = GSON_INSTANCE.toJson(object);

        if (object.getClass().isArray()) {
            return (Object[]) GSON_INSTANCE.fromJson(jsonString, entity);
        } else {
            return GSON_INSTANCE.fromJson(jsonString, entity);
        }
    }
}