From b0de5cfeb4ecc7323a1c744d7b5d75bb162e45ad Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 1 Jan 2018 22:47:53 +0800 Subject: [PATCH] add testcase for issue #1593 --- .../alibaba/json/bvt/kotlin/Issue1593.java | 57 ++++++++++++++++++ .../kotlin/issue1593/Issue1593_JsonBean.clazz | Bin 0 -> 2931 bytes .../kotlin/issue1593/Issue1593_Lists.clazz | Bin 0 -> 1996 bytes 3 files changed, 57 insertions(+) create mode 100644 src/test/java/com/alibaba/json/bvt/kotlin/Issue1593.java create mode 100644 src/test/resources/kotlin/issue1593/Issue1593_JsonBean.clazz create mode 100644 src/test/resources/kotlin/issue1593/Issue1593_Lists.clazz diff --git a/src/test/java/com/alibaba/json/bvt/kotlin/Issue1593.java b/src/test/java/com/alibaba/json/bvt/kotlin/Issue1593.java new file mode 100644 index 000000000..b190807e9 --- /dev/null +++ b/src/test/java/com/alibaba/json/bvt/kotlin/Issue1593.java @@ -0,0 +1,57 @@ +package com.alibaba.json.bvt.kotlin; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import junit.framework.TestCase; +import org.apache.commons.io.IOUtils; + +import java.io.IOException; +import java.io.InputStream; + +public class Issue1593 extends TestCase { + public void test_user() throws Exception { + ExtClassLoader classLoader = new ExtClassLoader(); + Class clazz = classLoader.loadClass("Issue1593_JsonBean"); + + String json = "{\n" + + " \"signature\": \"8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918\",\n" + + " \"list\": [\n" + + " {\n" + + " \"name\":\"aaa\"\n" + + " },{\n" + + " \"name\":\"bbb\"\n" + + " }\n" + + " ]\n" + + " }"; + Object bean = JSON.parseObject(json, clazz); + assertEquals("{\"list\":[{\"name\":\"aaa\"},{\"name\":\"bbb\"}],\"signature\":\"8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918\"}" + , JSON.toJSONString(bean)); + + JSONObject jsonObject = JSON.parseObject(json); + jsonObject.toJavaObject(clazz); + } + + public static class ExtClassLoader extends ClassLoader { + + public ExtClassLoader() throws IOException { + super(Thread.currentThread().getContextClassLoader()); + + { + byte[] bytes; + InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("kotlin/issue1593/Issue1593_JsonBean.clazz"); + bytes = IOUtils.toByteArray(is); + is.close(); + + super.defineClass("Issue1593_JsonBean", bytes, 0, bytes.length); + } + { + byte[] bytes; + InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("kotlin/issue1593/Issue1593_Lists.clazz"); + bytes = IOUtils.toByteArray(is); + is.close(); + + super.defineClass("Issue1593_Lists", bytes, 0, bytes.length); + } + } + } +} diff --git a/src/test/resources/kotlin/issue1593/Issue1593_JsonBean.clazz b/src/test/resources/kotlin/issue1593/Issue1593_JsonBean.clazz new file mode 100644 index 0000000000000000000000000000000000000000..a9e4114d3dc76497728d8b039f8e7b3c0ba36e17 GIT binary patch literal 2931 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 literal 0 HcmV?d00001