package com.alibaba.json.bvt.jsonfield; import java.lang.reflect.Field; import org.junit.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.parser.deserializer.FieldDeserializer; import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer; import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer; import junit.framework.TestCase; public class JSONFieldTest_0 extends TestCase { public void test_0() throws Exception { VO vo = new VO(); vo.setF0(100); vo.setF1(101); vo.setF2(102); String text = JSON.toJSONString(vo); System.out.println(text); Assert.assertEquals("{\"f2\":102,\"f1\":101,\"f0\":100}", text); VO vo_decoded = JSON.parseObject(text, VO.class); Assert.assertEquals(vo.f0, vo_decoded.f0); Assert.assertEquals(vo.f1, vo_decoded.f1); Assert.assertEquals(vo.f2, vo_decoded.f2); JavaBeanDeserializer javaBeanDeser = null; ObjectDeserializer deser = ParserConfig.getGlobalInstance().getDeserializer(VO.class); javaBeanDeser = (JavaBeanDeserializer) deser; Field field = JavaBeanDeserializer.class.getDeclaredField("sortedFieldDeserializers"); field.setAccessible(true); FieldDeserializer[] fieldDeserList = (FieldDeserializer[]) field.get(javaBeanDeser); Assert.assertEquals(3, fieldDeserList.length); Assert.assertEquals("f2", fieldDeserList[0].fieldInfo.name); Assert.assertEquals("f1", fieldDeserList[1].fieldInfo.name); Assert.assertEquals("f0", fieldDeserList[2].fieldInfo.name); } public static class VO { @JSONField(ordinal = 3) private int f0; @JSONField(ordinal = 2) private int f1; @JSONField(ordinal = 1) private int f2; public int getF0() { return f0; } public void setF0(int f0) { this.f0 = f0; } public int getF1() { return f1; } public void setF1(int f1) { this.f1 = f1; } public int getF2() { return f2; } public void setF2(int f2) { this.f2 = f2; } } }