Commit 3339419d authored by 高铁's avatar 高铁
Browse files

bug fixed for issue 555

Showing with 136 additions and 1 deletion
+136 -1
......@@ -403,6 +403,10 @@ public class JavaBeanInfo {
fieldAnnotation = field.getAnnotation(JSONField.class);
if (fieldAnnotation != null) {
if (!fieldAnnotation.deserialize()) {
continue;
}
ordinal = fieldAnnotation.ordinal();
serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());
parserFeatures = Feature.of(fieldAnnotation.parseFeatures());
......@@ -444,6 +448,10 @@ public class JavaBeanInfo {
JSONField fieldAnnotation = field.getAnnotation(JSONField.class);
if (fieldAnnotation != null) {
if (!fieldAnnotation.deserialize()) {
continue;
}
ordinal = fieldAnnotation.ordinal();
serialzeFeatures = SerializerFeature.of(fieldAnnotation.serialzeFeatures());
parserFeatures = Feature.of(fieldAnnotation.parseFeatures());
......@@ -480,12 +488,16 @@ public class JavaBeanInfo {
String propertyName;
JSONField annotation = method.getAnnotation(JSONField.class);
if (annotation != null && annotation.deserialize()) {
continue;
}
if (annotation != null && annotation.name().length() > 0) {
propertyName = annotation.name();
} else {
propertyName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);
}
FieldInfo fieldInfo = getField(fieldList, propertyName);
if (fieldInfo != null) {
continue;
......
package com.alibaba.json.bvt.bug;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import junit.framework.TestCase;
public class Bug_for_issue_555 extends TestCase {
public void test_for_issue() throws Exception {
JSON.parseObject("{\"list\":[{\"spec\":{}}]}", A.class);
}
public static class A {
public List<B> list;
}
public static class B {
@JSONField(serialize = true, deserialize = false)
public Spec spec;
}
public static class Spec {
private int id;
public Spec(int id) {
this.id = id;
}
}
}
package com.alibaba.json.bvt.bug;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import junit.framework.TestCase;
public class Bug_for_issue_555_setter extends TestCase {
public void test_for_issue() throws Exception {
JSON.parseObject("{\"list\":[{\"spec\":{}}]}", A.class);
}
public static class A {
public List<B> list;
}
public static class B {
@JSONField(serialize = true, deserialize = false)
private Spec spec;
public Spec getSpec() {
return spec;
}
public void setSpec(Spec spec) {
this.spec = spec;
}
}
public static class Spec {
private int id;
public Spec(int id){
this.id = id;
}
}
}
package com.alibaba.json.bvt.bug;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import junit.framework.TestCase;
public class Bug_for_issue_555_setter2 extends TestCase {
public void test_for_issue() throws Exception {
JSON.parseObject("{\"list\":[{\"spec\":{}}]}", A.class);
}
public static class A {
public List<B> list;
}
public static class B {
private Spec spec;
@JSONField(serialize = true, deserialize = false)
public Spec getSpec() {
return spec;
}
@JSONField(serialize = true, deserialize = false)
public void setSpec(Spec spec) {
this.spec = spec;
}
}
public static class Spec {
private int id;
public Spec(int id){
this.id = id;
}
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment