Java 프로그래밍: 지정된 필드 순서에 따라 Bean을 Json으로 변환

Json 도구 소개
Java 언어에서 흔히 볼 수 있는 Bean이 Json으로 변환되는 Jar 패키지에는 다음과 같은 범주가 있습니다.
  • fastjson-1.2.23.jar[alibaba][커뮤니티 활약] 주소:https://github.com/alibaba/fastjson
  • gson-2.8.0.jar[Google][커뮤니티 활약] 주소:https://github.com/google/gson
  • jackson-core.jar 주소:http://jackson.codehaus.org
  • json-lib-2.4 주소:http://www.mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4

  • 우리의 문제는 상기 도구를 사용하는 과정에서 어떻게 지정된 필드 순서에 따라 서열화합니까?다음은fastjson을 예로 들어 설명한다.
    해결 방법
    코드 1:
    public class User2 {
        private String name;
        private String age;
        private String sex;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
    

    기본 생성 Json 문자열은 다음과 같습니다.
    {"age":"18","name":"json","sex":" "}
    

    코드 2:
    import com.alibaba.fastjson.annotation.JSONField;
    
    public class User {
        @JSONField(ordinal=1)
        private String name;
        @JSONField(ordinal=2)
        private String age;
        @JSONField(ordinal=3)
        private String sex;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
    

    메모@JSONField(ordinal=1) 필드 정렬 설정을 사용하여 다음과 같은 Json 문자열을 생성합니다.
    {"name":"json","age":"18","sex":" "}
    

    기타 도구는 대부분 유사한 기능을 갖추고 있으며, 이상은 참고만 제공한다.
    디저트
    코드 3:
    import com.alibaba.fastjson.annotation.JSONField;
    
    public class User {
        @JSONField(ordinal = 1)
        private String name;
        @JSONField(ordinal = 2, name = "nianling")
        private String age;
        @JSONField(ordinal = 3)
        private String sex;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }   
    }
    

    다음과 같은 Json 문자열을 생성합니다.
    {"name":"json","nianling":"18","sex":" "}
    

    코드2가 생성한 문자열을 비교해 보면age가nianling으로 변한 것을 발견할 수 있다. 왜 이런 것일까?
    코드를 다시 보기:
       :
    @JSONField(ordinal = 2)
    private String age;
    
       :
    @JSONField(ordinal = 2, name = "nianling")
    private String age;
    

    원래는name의 작용이다.

    좋은 웹페이지 즐겨찾기