/src/test/java/com/alibaba/json/bvt/parser/deser/FieldSerializerTest3.java

https://github.com/alibaba/fastjson · Java · 90 lines · 70 code · 20 blank · 0 comment · 3 complexity · 39abf2de000416a82fc978374ce0e246 MD5 · raw file

  1. package com.alibaba.json.bvt.parser.deser;
  2. import org.junit.Assert;
  3. import junit.framework.TestCase;
  4. import com.alibaba.fastjson.JSONException;
  5. import com.alibaba.fastjson.annotation.JSONField;
  6. import com.alibaba.fastjson.serializer.JSONSerializer;
  7. import com.alibaba.fastjson.serializer.NameFilter;
  8. import com.alibaba.fastjson.serializer.PropertyFilter;
  9. import com.alibaba.fastjson.serializer.SerializeWriter;
  10. import com.alibaba.fastjson.serializer.SerializerFeature;
  11. import com.alibaba.fastjson.serializer.ValueFilter;
  12. public class FieldSerializerTest3 extends TestCase {
  13. public void test_writeNull() throws Exception {
  14. String text = toJSONString(new Entity());
  15. Assert.assertEquals("{\"v\":\"xxx\"}", text);
  16. }
  17. public static final String toJSONString(Object object, SerializerFeature... features) {
  18. SerializeWriter out = new SerializeWriter();
  19. try {
  20. JSONSerializer serializer = new JSONSerializer(out);
  21. serializer.getPropertyFilters().add(new PropertyFilter() {
  22. public boolean apply(Object source, String name, Object value) {
  23. if ("id".equals(name)) {
  24. return false;
  25. }
  26. return true;
  27. }
  28. });
  29. serializer.getNameFilters().add(new NameFilter() {
  30. public String process(Object source, String name, Object value) {
  31. return name;
  32. }
  33. });
  34. serializer.getValueFilters().add(new ValueFilter() {
  35. public Object process(Object source, String name, Object value) {
  36. if ("v".endsWith(name)) {
  37. return "xxx";
  38. }
  39. return value;
  40. }
  41. });
  42. for (com.alibaba.fastjson.serializer.SerializerFeature feature : features) {
  43. serializer.config(feature, true);
  44. }
  45. serializer.write(object);
  46. return out.toString();
  47. } catch (StackOverflowError e) {
  48. throw new JSONException("maybe circular references", e);
  49. } finally {
  50. out.close();
  51. }
  52. }
  53. private static class Entity {
  54. private int id;
  55. @JSONField(name = "v", serialzeFeatures = { SerializerFeature.WriteMapNullValue })
  56. private String value;
  57. public int getId() {
  58. return id;
  59. }
  60. public void setId(int id) {
  61. this.id = id;
  62. }
  63. public String getValue() {
  64. return value;
  65. }
  66. public void setValue(String value) {
  67. this.value = value;
  68. }
  69. }
  70. }