java类com.alibaba.fastjson.util.TypeUtils的实例源码

LongCodec.java 文件源码 项目:uavstack 阅读 29 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
    final JSONLexer lexer = parser.getLexer();

    Long longObject;
    if (lexer.token() == JSONToken.LITERAL_INT) {
        long longValue = lexer.longValue();
        lexer.nextToken(JSONToken.COMMA);
        longObject = Long.valueOf(longValue);
    } else {

        Object value = parser.parse();

        if (value == null) {
            return null;
        }

        longObject = TypeUtils.castToLong(value);
    }

    if (clazz == AtomicLong.class) {
        return (T) new AtomicLong(longObject.longValue());
    }

    return (T) longObject;
}
LongCodec.java 文件源码 项目:boohee_v5.6 阅读 32 收藏 0 点赞 0 评论 0
public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
    Long longObject;
    JSONLexer lexer = parser.getLexer();
    if (lexer.token() == 2) {
        long longValue = lexer.longValue();
        lexer.nextToken(16);
        longObject = Long.valueOf(longValue);
    } else {
        Object value = parser.parse();
        if (value == null) {
            return null;
        }
        longObject = TypeUtils.castToLong(value);
    }
    if (clazz == AtomicLong.class) {
        return new AtomicLong(longObject.longValue());
    }
    return longObject;
}
ClassDerializer.java 文件源码 项目:uavstack 阅读 40 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
    JSONLexer lexer = parser.getLexer();

    if (lexer.token() == JSONToken.NULL) {
        lexer.nextToken();
        return null;
    }

    if (lexer.token() != JSONToken.LITERAL_STRING) {
        throw new JSONException("expect className");
    }
    String className = lexer.stringVal();
    lexer.nextToken(JSONToken.COMMA);

    return (T) TypeUtils.loadClass(className);
}
TypeUtilsTest_castToJavaBean.java 文件源码 项目:GitHub 阅读 41 收藏 0 点赞 0 评论 0
public void test_bean_2() throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", 123);
    PO vo = TypeUtils.castToJavaBean(map, PO.class);
    Assert.assertEquals(123, vo.id);

    SerializeWriter out = new SerializeWriter();

    try {
        SerializeConfig config = new SerializeConfig();
        JSONSerializer serializer = new JSONSerializer(out, config);
        config.put(PO.class, new JavaBeanSerializer(PO.class, Collections.singletonMap("id", "ID")));

        serializer.write(vo);

        Assert.assertEquals("{\"ID\":123}", out.toString());
    } finally {
        out.close();
    }


}
TypeUtilsTest_castToJavaBean.java 文件源码 项目:GitHub 阅读 35 收藏 0 点赞 0 评论 0
public void test_bean_3() throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", 123);
    PO vo = TypeUtils.castToJavaBean(map, PO.class);
    Assert.assertEquals(123, vo.id);

    SerializeWriter out = new SerializeWriter();

    try {
        SerializeConfig config = new SerializeConfig();
        JSONSerializer serializer = new JSONSerializer(out, config);
        config.put(PO.class, new JavaBeanSerializer(PO.class, Collections.singletonMap("id", (String) null)));

        serializer.write(vo);

        Assert.assertEquals("{}", out.toString());
    } finally {
        out.close();
    }


}
BigIntegerCodec.java 文件源码 项目:uavstack 阅读 31 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public static <T> T deserialze(DefaultJSONParser parser) {
    final JSONLexer lexer = parser.getLexer();
    if (lexer.token() == JSONToken.LITERAL_INT) {
        String val = lexer.numberString();
        lexer.nextToken(JSONToken.COMMA);
        return (T) new BigInteger(val);
    }

    Object value = parser.parse();

    if (value == null) {
        return null;
    }

    return (T) TypeUtils.castToBigInteger(value);
}
IntegerCodec.java 文件源码 项目:uavstack 阅读 37 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
    final JSONLexer lexer = parser.getLexer();

    if (lexer.token() == JSONToken.NULL) {
        lexer.nextToken(JSONToken.COMMA);
        return null;
    }

    Integer intObj;
    if (lexer.token() == JSONToken.LITERAL_INT) {
        int val = lexer.intValue();
        lexer.nextToken(JSONToken.COMMA);
        intObj = Integer.valueOf(val);
    } else if (lexer.token() == JSONToken.LITERAL_FLOAT) {
        BigDecimal decimalValue = lexer.decimalValue();
        lexer.nextToken(JSONToken.COMMA);
        intObj = Integer.valueOf(decimalValue.intValue());
    } else {
        Object value = parser.parse();

        intObj = TypeUtils.castToInt(value);
    }

    if (clazz == AtomicInteger.class) {
        return (T) new AtomicInteger(intObj.intValue());
    }

    return (T) intObj;
}
ASMDeserializerFactory.java 文件源码 项目:GitHub 阅读 39 收藏 0 点赞 0 评论 0
private void _newCollection(MethodVisitor mw, Class<?> fieldClass, int i, boolean set) {
    if (fieldClass.isAssignableFrom(ArrayList.class) && !set) {
        mw.visitTypeInsn(NEW, "java/util/ArrayList");
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V");
    } else if (fieldClass.isAssignableFrom(LinkedList.class) && !set) {
        mw.visitTypeInsn(NEW, type(LinkedList.class));
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, type(LinkedList.class), "<init>", "()V");
    } else if (fieldClass.isAssignableFrom(HashSet.class)) {
        mw.visitTypeInsn(NEW, type(HashSet.class));
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, type(HashSet.class), "<init>", "()V");
    } else if (fieldClass.isAssignableFrom(TreeSet.class)) {
        mw.visitTypeInsn(NEW, type(TreeSet.class));
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, type(TreeSet.class), "<init>", "()V");
    } else if (fieldClass.isAssignableFrom(LinkedHashSet.class)) {
        mw.visitTypeInsn(NEW, type(LinkedHashSet.class));
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, type(LinkedHashSet.class), "<init>", "()V");
    } else if (set) {
        mw.visitTypeInsn(NEW, type(HashSet.class));
        mw.visitInsn(DUP);
        mw.visitMethodInsn(INVOKESPECIAL, type(HashSet.class), "<init>", "()V");
    } else {
        mw.visitVarInsn(ALOAD, 0);
        mw.visitLdcInsn(i);
        mw.visitMethodInsn(INVOKEVIRTUAL, type(JavaBeanDeserializer.class), "getFieldType",
                           "(I)Ljava/lang/reflect/Type;");
        mw.visitMethodInsn(INVOKESTATIC, type(TypeUtils.class), "createCollection",
                           "(Ljava/lang/reflect/Type;)Ljava/util/Collection;");
    }
    mw.visitTypeInsn(CHECKCAST, type(fieldClass)); // cast
}
JSONObject.java 文件源码 项目:boohee_v5.6 阅读 43 收藏 0 点赞 0 评论 0
public byte[] getBytes(String key) {
    Object value = get(key);
    if (value == null) {
        return null;
    }
    return TypeUtils.castToBytes(value);
}
JSONObject.java 文件源码 项目:GitHub 阅读 37 收藏 0 点赞 0 评论 0
public <T> T getObject(String key, TypeReference typeReference) {
    Object obj = map.get(key);
    if (typeReference == null) {
        return (T) obj;
    }
    return TypeUtils.cast(obj, typeReference.getType(), ParserConfig.getGlobalInstance());
}
JSONReader.java 文件源码 项目:GitHub 阅读 39 收藏 0 点赞 0 评论 0
public Integer readInteger() {
    Object object;
    if (context == null) {
        object = parser.parse();
    } else {
        readBefore();
        object = parser.parse();
        readAfter();
    }

    return TypeUtils.castToInt(object);
}
JSONReader.java 文件源码 项目:GitHub 阅读 39 收藏 0 点赞 0 评论 0
public Long readLong() {
    Object object;
    if (context == null) {
        object = parser.parse();
    } else {
        readBefore();
        object = parser.parse();
        readAfter();
    }

    return TypeUtils.castToLong(object);
}
BigIntegerCodec.java 文件源码 项目:GitHub 阅读 45 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public static <T> T deserialze(DefaultJSONParser parser) {
    final JSONLexer lexer = parser.lexer;
    if (lexer.token() == JSONToken.LITERAL_INT) {
        String val = lexer.numberString();
        lexer.nextToken(JSONToken.COMMA);
        return (T) new BigInteger(val);
    }

    Object value = parser.parse();
    return value == null //
        ? null //
        : (T) TypeUtils.castToBigInteger(value);
}
FieldSerializer.java 文件源码 项目:GitHub 阅读 37 收藏 0 点赞 0 评论 0
public Object getPropertyValueDirect(Object object) throws InvocationTargetException, IllegalAccessException {
    Object fieldValue =  fieldInfo.get(object);
    if (persistenceXToMany && !TypeUtils.isHibernateInitialized(fieldValue)) {
        return null;
    }
    return fieldValue;
}
TypeUtilsTest2.java 文件源码 项目:GitHub 阅读 32 收藏 0 点赞 0 评论 0
public void test_error_1() throws Exception {
    Exception error = null;
    try {
        TypeUtils.castToChar(true);
    } catch (JSONException e) {
        error = e;
    }
    Assert.assertNotNull(error);
}
JSONObject.java 文件源码 项目:boohee_v5.6 阅读 48 收藏 0 点赞 0 评论 0
public float getFloatValue(String key) {
    Object value = get(key);
    if (value == null) {
        return 0.0f;
    }
    return TypeUtils.castToFloat(value).floatValue();
}
JSONArray.java 文件源码 项目:boohee_v5.6 阅读 40 收藏 0 点赞 0 评论 0
public boolean getBooleanValue(int index) {
    Object value = get(index);
    if (value == null) {
        return false;
    }
    return TypeUtils.castToBoolean(value).booleanValue();
}
JSONReader.java 文件源码 项目:uavstack 阅读 43 收藏 0 点赞 0 评论 0
public Integer readInteger() {
    Object object;
    if (context == null) {
        object = parser.parse();
    } else {
        readBefore();
        object = parser.parse();
        readAfter();
    }

    return TypeUtils.castToInt(object);
}
JSONArray.java 文件源码 项目:GitHub 阅读 45 收藏 0 点赞 0 评论 0
/**
 * @since  1.2.23
 */
public <T> List<T> toJavaList(Class<T> clazz) {
    List<T> list = new ArrayList<T>(this.size());

    ParserConfig config = ParserConfig.getGlobalInstance();

    for (Object item : this) {
        T classItem = (T) TypeUtils.cast(item, clazz, config);
        list.add(classItem);
    }

    return list;
}
CharacterCodec.java 文件源码 项目:uavstack 阅读 38 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
    Object value = parser.parse();

    if (value == null) {
        return null;
    }

    return (T) TypeUtils.castToChar(value);
}
JSONObject.java 文件源码 项目:boohee_v5.6 阅读 47 收藏 0 点赞 0 评论 0
public long getLongValue(String key) {
    Object value = get(key);
    if (value == null) {
        return 0;
    }
    return TypeUtils.castToLong(value).longValue();
}
JavaObjectDeserializer.java 文件源码 项目:uavstack 阅读 44 收藏 0 点赞 0 评论 0
@SuppressWarnings("unchecked")
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
    if (type instanceof GenericArrayType) {
        Type componentType = ((GenericArrayType) type).getGenericComponentType();
        if (componentType instanceof TypeVariable) {
            TypeVariable<?> componentVar = (TypeVariable<?>) componentType;
            componentType = componentVar.getBounds()[0];
        }

        List<Object> list = new ArrayList<Object>();
        parser.parseArray(componentType, list);
        Class<?> componentClass;
        if (componentType instanceof Class) {
            componentClass = (Class<?>) componentType;
            if (componentClass == boolean.class) {
                return (T) TypeUtils.cast(list, boolean[].class, parser.getConfig());
            } else if (componentClass == short.class) {
                return (T) TypeUtils.cast(list, short[].class, parser.getConfig());
            } else if (componentClass == int.class) {
                return (T) TypeUtils.cast(list, int[].class, parser.getConfig());
            } else if (componentClass == long.class) {
                return (T) TypeUtils.cast(list, long[].class, parser.getConfig());
            } else if (componentClass == float.class) {
                return (T) TypeUtils.cast(list, float[].class, parser.getConfig());
            } else if (componentClass == double.class) {
                return (T) TypeUtils.cast(list, double[].class, parser.getConfig());
            }

            Object[] array = (Object[]) Array.newInstance(componentClass, list.size());
            list.toArray(array);
            return (T) array;
        } else {
            return (T) list.toArray();
        }

    }

    return (T) parser.parse(fieldName);
}
JSONArray.java 文件源码 项目:boohee_v5.6 阅读 35 收藏 0 点赞 0 评论 0
public byte getByteValue(int index) {
    Object value = get(index);
    if (value == null) {
        return (byte) 0;
    }
    return TypeUtils.castToByte(value).byteValue();
}
TypeUtilsTest3.java 文件源码 项目:GitHub 阅读 31 收藏 0 点赞 0 评论 0
public void test_error() throws Exception {
    Exception error = null;
    try {
        TypeUtils.castToEnum("\"A1\"", Type.class, null);
    } catch (Exception ex) {
        error = ex;
    }
    Assert.assertNotNull(error);
}
TypeUtilsTest3.java 文件源码 项目:GitHub 阅读 30 收藏 0 点赞 0 评论 0
public void test_error_1() throws Exception {
    Exception error = null;
    try {
        TypeUtils.castToEnum(Boolean.TRUE, Type.class, null);
    } catch (Exception ex) {
        error = ex;
    }
    Assert.assertNotNull(error);
}
JSONObject.java 文件源码 项目:boohee_v5.6 阅读 42 收藏 0 点赞 0 评论 0
public double getDoubleValue(String key) {
    Object value = get(key);
    if (value == null) {
        return 0.0d;
    }
    return TypeUtils.castToDouble(value).doubleValue();
}
CharacterCodec.java 文件源码 项目:boohee_v5.6 阅读 27 收藏 0 点赞 0 评论 0
public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName) {
    Object value = parser.parse();
    if (value == null) {
        return null;
    }
    return TypeUtils.castToChar(value);
}
TypeUtilsTest3.java 文件源码 项目:GitHub 阅读 39 收藏 0 点赞 0 评论 0
public void test_error_3() throws Exception {
    Exception error = null;
    try {
        TypeUtils.cast("xxx", new TypeReference<Object[]>() {
        }.getType(), null);
    } catch (Exception ex) {
        error = ex;
    }
    Assert.assertNotNull(error);
}
TypeUtilsTest_castToJavaBean.java 文件源码 项目:GitHub 阅读 32 收藏 0 点赞 0 评论 0
public void test_castToJavaBean_StackTraceElement() throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("className", "java.lang.Object");
    map.put("methodName", "hashCode");
    StackTraceElement element = TypeUtils.castToJavaBean(map, StackTraceElement.class, null);
    Assert.assertEquals("java.lang.Object", element.getClassName());
    Assert.assertEquals("hashCode", element.getMethodName());
    Assert.assertEquals(null, element.getFileName());
}
TypeUtilsTest_castToJavaBean.java 文件源码 项目:GitHub 阅读 40 收藏 0 点赞 0 评论 0
public void test_castToJavaBean_StackTraceElement_1() throws Exception {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("className", "java.lang.Object");
    map.put("methodName", "hashCode");
    map.put("lineNumber", 12);
    StackTraceElement element = TypeUtils.castToJavaBean(map, StackTraceElement.class, null);
    Assert.assertEquals("java.lang.Object", element.getClassName());
    Assert.assertEquals("hashCode", element.getMethodName());
    Assert.assertEquals(null, element.getFileName());
    Assert.assertEquals(12, element.getLineNumber());
}


问题


面经


文章

微信
公众号

扫码关注公众号