content: package com.alibaba.json.bvt.bug;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.parser.Feature;
  import junit.framework.TestCase;
  
  import java.util.LinkedList;
  import java.util.List;
  
  /**
   * Created by wenshao on 06/12/2016.
   */
  public class Issue912 extends TestCase {
      public void test_for_issue() throws Exception {
          String allMethods = "{\"mList\":[{\"className\":\"com.qa.scftemplate.contract.ISCFServiceForDyjAction\",\"methodName\":\"getArrayInt\",\"parameterSize\":1,\"parameters\":[{\"clazz\":\"[I\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"}],\"returnType\":\"[I\",\"url\":\"tcp://SCFServiceForDyj/SCFServiceForDyjActionService\"},{\"className\":\"com.qa.scftemplate.contract.ISCFServiceForDyjAction\",\"methodName\":\"getArrayPrimative\",\"parameterSize\":7,\"parameters\":[{\"clazz\":\"[I\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[F\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[S\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[D\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[J\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[B\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"},{\"clazz\":\"[C\",\"clsList\":null,\"isGenericity\":false,\"value\":\"\"}],\"returnType\":\"[Ljava.lang.String;\",\"url\":\"tcp://SCFServiceForDyj/SCFServiceForDyjActionService\"}]}";
          JsonBean jsonBean = getJsonData(allMethods, JsonBean.class);
  
          assertEquals(2, jsonBean.getmList().size());
          SCFMethod m1 = jsonBean.getmList().get(0);
          assertNotNull(m1);
      }
  
      public static <T> T getJsonData(String json, Class<T> clazz) {
          T jd = (T) JSON.parseObject(json, clazz,
                  Feature.IgnoreNotMatch,
                  Feature.AutoCloseSource
          );
          return jd;
      }
  
      public static class JsonBean {
          private List<SCFMethod> mList;
  
          public List<SCFMethod> getmList() {
              return mList;
          }
  
          public void setmList(List<SCFMethod> mList) {
              this.mList = mList;
          }
      }
  
      public static class SCFMethod {
          public String className;
          public String url;
          public String methodName;
          public int parameterSize;
          public List<SCFMethodParameter> parameters = new LinkedList<SCFMethodParameter>();
          public Class<?> returnType;
  
          public String getUrl() {
              return url;
          }
  
          public void setUrl(String url) {
              this.url = url;
          }
  
          public String getClassName() {
              return className;
          }
  
          public void setClassName(String className) {
              this.className = className;
          }
  
          public Class<?> getReturnType() {
              return returnType;
          }
  
          public void setReturnType(Class<?> returnType) {
              this.returnType = returnType;
          }
  
          public String getMethodName() {
              return methodName;
          }
  
          public void setMethodName(String methodName) {
              this.methodName = methodName;
          }
  
          public int getParameterSize() {
              return parameterSize;
          }
  
          public void setParameterSize(int parameterSize) {
              this.parameterSize = parameterSize;
          }
  
          public List<SCFMethodParameter> getParameters() {
              return parameters;
          }
  
          public void setParameters(List<SCFMethodParameter> parameters) {
              this.parameters = parameters;
          }
      }
  
      public static class SCFMethodParameter implements Cloneable {
          public Class<?> clazz;
          public Object value;
          public boolean isGenericity = false;
          public List<Class<?>> clsList;
  
          public boolean getIsGenericity() {
              return isGenericity;
          }
  
          public void setIsGenericity(boolean isGenericity) {
              this.isGenericity = isGenericity;
          }
  
          public Object getValue() {
              return value;
          }
  
          public void setValue(Object value) {
              this.value = value;
          }
  
          public Class<?> getClazz() {
              return clazz;
          }
  
          public void setClazz(Class<?> clazz) {
              this.clazz = clazz;
          }
  
          public List<Class<?>> getClsList() {
              return clsList;
          }
  
          public void setClsList(List<Class<?>> clsList) {
              this.clsList = clsList;
          }
      }
  }
  