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)
```
int[] o1 = {1, 2, 3, 4, 5}, o2 = JSON.parse("[1.2,2,3,4,5]", int[].class);
        assertEquals(o2.length, 5);
        for (int i = 0; i < 5; i++)
            assertEquals(o1[i], o2[i]);
        List l1 = (List) JSON.parse("[1.2,2,3,4,5]", List.class);
        assertEquals(l1.size(), 5);
        for (int i = 0; i < 5; i++)
            assertEquals(o1[i], ((Number) l1.get(i)).intValue());
        Bean bean = JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊',$$:214726,$b:TRUE}", Bean.class);
        assertEquals(bean.getName(), "qianlei");
        assertEquals(bean.getDisplayName(), "钱磊");
        assertEquals(bean.array.length, 5);
        assertEquals(bean.$$, 214726);
        assertEquals(bean.$b, true);
        for (int i = 0; i < 10000; i++)
            JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊'}", Bean1.class);
        long now = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++)
            JSON.parse("{name:'qianlei',array:[1,2,3,4,98.123],displayName:'钱磊'}", Bean1.class);
        System.out.println("parse to Class 10000 times in: " + (System.currentTimeMillis() - now));
    }
    @Test
    public void testParse2Arguments() throws Exception {
        Object[] test = JSON.parse("[1.2, 2, {name:'qianlei',array:[1,2,3,4,98.123]} ]", new Class<?>[]{int.class, int.class, Bean.class});
        assertEquals(test[1], 2);
        assertEquals(test[2].getClass(), Bean.class);
        test = JSON.parse("[1.2, 2]", new Class<?>[]{int.class, int.class});
        assertEquals(test[0], 1);
    }
    public static class Bean1 {