fix from dubbo:master, 2.5.7 : GenericJSONConverter主要是用在日志部分输出，所以当我们输出locale对象时就发生stack溢出。
```
java.lang.StackOverflowError
	at com.alibaba.dubbo.common.json.JSONWriter.valueString(JSONWriter.java:189)
	at com.alibaba.dubbo.common.json.GenericJSONConverter$7.encode(GenericJSONConverter.java:100)
	at com.alibaba.dubbo.common.json.GenericJSONConverter.writeValue(GenericJSONConverter.java:338)
	at com.alibaba.dubbo.common.json.GenericJSONConverter.writeValue(GenericJSONConverter.java:347)
	at com.alibaba.dubbo.common.json.GenericJSONConverter.writeValue(GenericJSONConverter.java:395)
	at com.alibaba.dubbo.common.json.GenericJSONConverter.writeValue(GenericJSONConverter.java:347)
	at com.alibaba.dubbo.common.json.GenericJSONConverter.writeValue(GenericJSONConverter.java:395)
```
}
            jb.objectEnd();
        } else if (Collection.class.isAssignableFrom(c)) {
            jb.arrayBegin();
            for (Object item : (Collection<Object>) obj) {
                if (item == null)
                    jb.valueNull();
                else
                    writeValue(item, jb, writeClass);
            }
            jb.arrayEnd();
        } else {
            jb.objectBegin();
            Wrapper w = Wrapper.getWrapper(c);
            String pns[] = w.getPropertyNames();
            for (String pn : pns) {
                if ((obj instanceof Throwable) && (
                        "localizedMessage".equals(pn)
                                || "cause".equals(pn)
                                || "suppressed".equals(pn)
                                || "stackTrace".equals(pn))) {
                    continue;
                }
                jb.objectItem(pn);
                Object value = w.getPropertyValue(obj, pn);
                if (value == null || value == obj)
                    jb.valueNull();
                else
                    writeValue(value, jb, writeClass);
            }