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)
```
GlobalDecoderMap.put(AtomicInteger.class, d);
        d = new Decoder() {
            @Override
            public Object decode(Object jv) throws IOException {
                if (jv instanceof Number) return new AtomicLong(((Number) jv).longValue());
                return (AtomicLong) null;
            }
        };
        GlobalDecoderMap.put(AtomicLong.class, d);
        d = new Decoder() {
            @Override
            public Object decode(Object jv) throws IOException {
                if (jv instanceof String) {
                    try {
                        return new SimpleDateFormat(DATE_FORMAT).parse((String) jv);
                    } catch (ParseException e) {
                        throw new IllegalArgumentException(e.getMessage(), e);
                    }
                }
                if (jv instanceof Number)
                    return new Date(((Number) jv).longValue());
                return (Date) null;
            }
        };
        GlobalDecoderMap.put(Date.class, d);
    }
    @Override
    @SuppressWarnings("unchecked")
    public void writeValue(Object obj, JSONWriter jb, boolean writeClass) throws IOException {
        if (obj == null) {