2013-03-22 4 views
0

다른 JSON을 다른 서버로 보내야하는 유스 케이스가 있습니다.Java 코드에서 JSON을 동적으로 생성 및 검색하는 방법은 무엇입니까?

차이점은 JSON 키 사이에만 있으며 키의 의미와 데이터는 동일합니다. XYZ는 JSON 데이터를 원하는 예를 들어 서버의

이 형식으로 전송합니다 :

{ "firstName":"Sam", "lastName":"Jones"} 
ABC는 JSON 데이터를이 형식으로 전송되고 싶어

이제 서버 :

{ "fName":"Sam", "lName":"Jones"} 

그리고 이름 및 성 데이터 POJO를 통해 채워집니다.

그래서 어떻게해야합니까? 나는 if-else 조건으로 코드를 어지럽히고 싶지 않다.

하지만 동적으로로드 된 템플릿처럼 작동하고 JSON 데이터를 만들고 POJO로 다시 가져올 수있는 항목을 가지고 있습니다.

+0

GSON 또는 Jackson (또는 다른)과 같은 JSON 라이브러리를 사용하십시오. 이 멋진 라이브러리를 사용하고 싶지 않다면 [이 하나] (http://json.org/java/) –

+0

을 사용하여 자신의 JSON 템플릿을 조작 할 수 있습니다. 색인과 함께. '1st'처럼 항상 FirstName과 2nd는 항상 LastName입니다. –

+0

@MuhammadHaseebKhan 키 순서는 다를 수 있습니다. – Sam

답변

0

두 개의 POJO를 만들어야합니다. 각 서버마다 하나씩. 각 POJO는 서버의 각 요구 사항을 충족시키기 위해 서로 다른 속성 이름을 가질 수 있습니다.

POJO는 동일한 속성 이름을 가질 수 있지만 주석을 달아 다른 JSON 속성을 생성 할 수 있습니다. Jackson과 같은 JSON 라이브러리는 JsonProperty 주석을 사용하여이를 수행 할 수 있습니다.

+0

이러한 POJO를 동적으로 생성 할 수 있습니까? 그래서 서버에 따라 각각의 POJO가 JSON을 생성하기 위해 Jackson 라이브러리로 전달 될 수 있습니까? 왜 내가 POJO를 DB에 템플릿으로 저장하고 JSON을 생성하는 데 사용할 것인지 묻는 이유가 있습니다. 이 방법으로 DB에 항목을 추가하고 통신 할 새 서버에 대해 새 JSOn을 사용할 준비가되었습니다. – Sam

+0

정의에서 스텁 만들기는 웹 서비스가 wsdl 파일을 사용하여 수행하려고 시도하는 것입니다. 실제 삶의 경험은 극도로 고통 스럽습니다. 작은 변화와 모든 스텁을 다시 생성해야합니다, 파서는 행동 등이 다릅니다.서버의 모든 구현자가 그것을 생성하도록 JSON ant의 사양에 동의하는 것이 훨씬 쉽습니다. 서버를 제어하는 ​​경우 스텁을 사용하여 jar 파일을 생성하고 사용 가능하게 만듭니다. –

+1

@Sam 이것을 체크 아웃하는 것이 좋습니다. http://stackoverflow.com/questions/12134231/jackson-dynamic-property-names –

0

이 전략은 어떻습니까? ":"

1.

interface People{ 
    public String getRegularFirstName(); 
    public String getRegularLastName(); 
} 

2. "{"firstName을위한 구현 인터페이스 각 POJO

// 클래스 정의 .. 공통으로 사용되는 인터페이스를 정의 샘 " "이 lastName": "존스"} { "FNAME" "에 대한

class PeopleData2 implements People{ 
    private String firstName; 
    private String lastName; 

    public String getRegularFirstName(){ 
     return firstName; 
    } 
    public String getRegularLastName(){ 
     return lastName; 
    } 
    //getter setter here.. 
} 

// 클래스"

class PeopleData1 implements People{ 
    private String fName; 
    private String lName; 

    public String getRegularFirstName(){ 
     return fName; 
    } 
    public String getRegularLastName(){ 
     return lName; 
    } 
    //getter setter here.. 
} 
"존스"} ":"샘 ","LNAME " 각 JSON 형식으로 각 POJO 클래스를 자격

3. 만들기 ...

dinamically 새로운 형식이 등장 갔지이 클래스를 추가해야하기 때문에 전략이 아니다. 하지만 시스템 확장성에 도움이됩니다.

+0

PeopleData1 클래스는 JavaBean 명명 규칙을 따라야합니다. 내 말은 getter getRegularFirstName getfName합니다. 그렇지 않으면 JSOn 라이브러리에 의해 JSOn이 생성되지 않습니다. – Sam

관련 문제