/src/test/java/com/alibaba/json/bvt/compatible/jsonlib/CompatibleTest0.java

https://github.com/alibaba/fastjson · Java · 386 lines · 289 code · 95 blank · 2 comment · 0 complexity · 34c8a8c331c6465135ad4567c121ac80 MD5 · raw file

  1. package com.alibaba.json.bvt.compatible.jsonlib;
  2. import java.math.BigDecimal;
  3. import java.math.BigInteger;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import org.junit.Assert;
  9. import junit.framework.TestCase;
  10. import com.alibaba.fastjson.JSON;
  11. import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
  12. import com.alibaba.fastjson.serializer.SerializeConfig;
  13. import com.alibaba.fastjson.serializer.SerializerFeature;
  14. public class CompatibleTest0 extends TestCase {
  15. protected void setUp() throws Exception {
  16. System.out.println();
  17. }
  18. public void test_0() throws Exception {
  19. Map<String, Object> obj = new HashMap<String, Object>();
  20. assertEquals(toCompatibleJSONString(obj), toJSONLibString(obj));
  21. }
  22. public void test_1() throws Exception {
  23. VO vo = new VO();
  24. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  25. }
  26. public void test_2() throws Exception {
  27. V1 vo = new V1();
  28. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  29. }
  30. // {"media":{"size":58982400,"format":"video/mpg4","uri":"http://javaone.com/keynote.mpg","title":"Javaone Keynote","width":640,"height":480,"duration":18000000,"bitrate":262144,"persons":["Bill Gates","Steve Jobs"],"player":"JAVA"}{"images":[{"size":"LARGE","uri":"http://javaone.com/keynote_large.jpg","title":"Javaone Keynote","width":1024,"height":768},{"size":"SMALL","uri":"http://javaone.com/keynote_small.jpg","title":"Javaone Keynote","width":320,"height":240}]}
  31. public void test_3() throws Exception {
  32. V1 vo = new V1();
  33. vo.setDate(new Date());
  34. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  35. }
  36. public void test_4() throws Exception {
  37. V1 vo = new V1();
  38. vo.setF2('中');
  39. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  40. }
  41. public void test_5() throws Exception {
  42. V2 vo = new V2();
  43. vo.setF1(0.2f);
  44. vo.setF2(33.3);
  45. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  46. }
  47. public void test_6() throws Exception {
  48. V2 vo = new V2();
  49. vo.setF1(0.1f);
  50. vo.setF2(33.3);
  51. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  52. }
  53. public void test_7() throws Exception {
  54. V2 vo = new V2();
  55. vo.setF2(0.1D);
  56. vo.setF1(33.3f);
  57. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  58. }
  59. public void test_8() throws Exception {
  60. V3 vo = new V3();
  61. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  62. }
  63. public void test_9() throws Exception {
  64. V4 vo = new V4();
  65. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  66. }
  67. public void test_10() throws Exception {
  68. Object vo = null;
  69. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  70. }
  71. public void test_11() throws Exception {
  72. Object vo = new HashMap();
  73. assertEquals(toCompatibleJSONString(vo), toJSONLibString(vo));
  74. }
  75. public static void assertEquals(String fastJSON, String jsonLib) {
  76. System.out.println("fastjson: " + fastJSON);
  77. System.out.println("json-lib: " + jsonLib);
  78. Assert.assertEquals(JSON.parse(fastJSON), JSON.parse(jsonLib));
  79. }
  80. private static final SerializeConfig mapping;
  81. static {
  82. mapping = new SerializeConfig();
  83. mapping.put(Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
  84. }
  85. private static final SerializerFeature[] features = { SerializerFeature.WriteMapNullValue, // 输出空置字段
  86. SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
  87. SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null,输出为0,而不是null
  88. SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null,输出为false,而不是null
  89. SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null,输出为"",而不是null
  90. };
  91. // 序列化为和JSON-LIB兼容的字符串
  92. public static String toCompatibleJSONString(Object object) {
  93. return JSON.toJSONString(object, mapping, features);
  94. }
  95. public static String toJSONLibString(Object object) {
  96. net.sf.json.JSONObject obj = net.sf.json.JSONObject.fromObject(object);
  97. return obj.toString();
  98. }
  99. public static class V4 {
  100. private Map<String, Object> items;
  101. public Map<String, Object> getItems() {
  102. return items;
  103. }
  104. public void setItems(Map<String, Object> items) {
  105. this.items = items;
  106. }
  107. }
  108. public static class V3 {
  109. private List<String> items;
  110. public List<String> getItems() {
  111. return items;
  112. }
  113. public void setItems(List<String> items) {
  114. this.items = items;
  115. }
  116. }
  117. public static class V2 {
  118. private float f1;
  119. private double f2;
  120. private Float f3;
  121. private Double f4;
  122. public float getF1() {
  123. return f1;
  124. }
  125. public void setF1(float f1) {
  126. this.f1 = f1;
  127. }
  128. public double getF2() {
  129. return f2;
  130. }
  131. public void setF2(double f2) {
  132. this.f2 = f2;
  133. }
  134. public Float getF3() {
  135. return f3;
  136. }
  137. public void setF3(Float f3) {
  138. this.f3 = f3;
  139. }
  140. public Double getF4() {
  141. return f4;
  142. }
  143. public void setF4(Double f4) {
  144. this.f4 = f4;
  145. }
  146. }
  147. public static class V1 {
  148. private Boolean f1;
  149. private Character f2;
  150. private String f3;
  151. private Date date;
  152. private boolean f4;
  153. private char f5;
  154. public Boolean getF1() {
  155. return f1;
  156. }
  157. public void setF1(Boolean f1) {
  158. this.f1 = f1;
  159. }
  160. public Character getF2() {
  161. return f2;
  162. }
  163. public void setF2(Character f2) {
  164. this.f2 = f2;
  165. }
  166. public String getF3() {
  167. return f3;
  168. }
  169. public void setF3(String f3) {
  170. this.f3 = f3;
  171. }
  172. public Date getDate() {
  173. return date;
  174. }
  175. public void setDate(Date date) {
  176. this.date = date;
  177. }
  178. public boolean isF4() {
  179. return f4;
  180. }
  181. public void setF4(boolean f4) {
  182. this.f4 = f4;
  183. }
  184. public char getF5() {
  185. return f5;
  186. }
  187. public void setF5(char f5) {
  188. this.f5 = f5;
  189. }
  190. }
  191. public static class VO {
  192. private int id;
  193. private String name;
  194. private BigDecimal salary;
  195. private List<String> items;
  196. private Byte f1;
  197. private Short f2;
  198. private Integer f3;
  199. private Long f4;
  200. private BigInteger f5;
  201. private BigDecimal f6;
  202. private byte f7;
  203. private short f8;
  204. private int f9;
  205. private long f10;
  206. public Byte getF1() {
  207. return f1;
  208. }
  209. public void setF1(Byte f1) {
  210. this.f1 = f1;
  211. }
  212. public Short getF2() {
  213. return f2;
  214. }
  215. public void setF2(Short f2) {
  216. this.f2 = f2;
  217. }
  218. public Integer getF3() {
  219. return f3;
  220. }
  221. public void setF3(Integer f3) {
  222. this.f3 = f3;
  223. }
  224. public Long getF4() {
  225. return f4;
  226. }
  227. public void setF4(Long f4) {
  228. this.f4 = f4;
  229. }
  230. public BigInteger getF5() {
  231. return f5;
  232. }
  233. public void setF5(BigInteger f5) {
  234. this.f5 = f5;
  235. }
  236. public BigDecimal getF6() {
  237. return f6;
  238. }
  239. public void setF6(BigDecimal f6) {
  240. this.f6 = f6;
  241. }
  242. public byte getF7() {
  243. return f7;
  244. }
  245. public void setF7(byte f7) {
  246. this.f7 = f7;
  247. }
  248. public short getF8() {
  249. return f8;
  250. }
  251. public void setF8(short f8) {
  252. this.f8 = f8;
  253. }
  254. public int getF9() {
  255. return f9;
  256. }
  257. public void setF9(int f9) {
  258. this.f9 = f9;
  259. }
  260. public long getF10() {
  261. return f10;
  262. }
  263. public void setF10(long f10) {
  264. this.f10 = f10;
  265. }
  266. public BigDecimal getSalary() {
  267. return salary;
  268. }
  269. public void setSalary(BigDecimal salary) {
  270. this.salary = salary;
  271. }
  272. public int getId() {
  273. return id;
  274. }
  275. public void setId(int id) {
  276. this.id = id;
  277. }
  278. public String getName() {
  279. return name;
  280. }
  281. public void setName(String name) {
  282. this.name = name;
  283. }
  284. public List<String> getItems() {
  285. return items;
  286. }
  287. public void setItems(List<String> items) {
  288. this.items = items;
  289. }
  290. }
  291. }