From 4991aeebec4c2d04e87c33fdf325aa45dfbe10bb Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 20 Mar 2017 18:36:55 +0800 Subject: [PATCH] android.net.Uri support. --- .../alibaba/fastjson/serializer/MiscCodec.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/alibaba/fastjson/serializer/MiscCodec.java b/src/main/java/com/alibaba/fastjson/serializer/MiscCodec.java index 5e355ff4b..f135c2832 100755 --- a/src/main/java/com/alibaba/fastjson/serializer/MiscCodec.java +++ b/src/main/java/com/alibaba/fastjson/serializer/MiscCodec.java @@ -1,6 +1,7 @@ package com.alibaba.fastjson.serializer; import java.io.IOException; +import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.net.MalformedURLException; @@ -227,6 +228,20 @@ public final class MiscCodec implements ObjectSerializer, ObjectDeserializer { } else if (clazz == char.class || clazz == Character.class) { return (T) TypeUtils.castToChar(strVal); } else { + if (clazz instanceof Class) { + String className = ((Class) clazz).getName(); + if ("android.net.Uri".equals(className)) { + try { + Class uriClass = Class.forName("android.net.Uri"); + Method method = uriClass.getMethod("parse", String.class); + Object uri = method.invoke(null, strVal); + return (T) uri; + } catch (Exception ex) { + throw new JSONException("parse android.net.Uri error.", ex); + } + } + } + return (T) TimeZone.getTimeZone(strVal); } }