2017-10-20 41 views
0

我有以下的java類,例如說員工傑克遜代表的Java String作爲Json的數字或字符串

class Employee{ 
     String empId; 
} 

當我序列使用傑克遜對象映射這個java類,我得到的樣品JSON輸出的,如果僱員ID爲123

{ 
"empId":"123" 
} 

什麼,我需要的是下面的輸出,如果EMP標識純粹是一些比方說123

{ 
"empId":123 
} 

而且,如果員工ID爲「A123」

{ 
"empId":"A123" 
} 

我可以寫一個自定義序列化類,並與自定義序列化註釋EMPID但與許多大面積物體的代碼庫這樣做,這是一個繁瑣的過程。

不傑克遜帶有任何現成的功能檢查,如果字符串是一個數字,那麼其表示爲編號或者在序列化過程中它表示爲字符串,類似的事情寫號的字符串功能

請讓我知道你的建議。

+0

爲什麼不只是在你的客戶端上處理這個特殊情況呢?而不是在服務器上做很多工作? – Lino

+0

對不起,這不能在客戶端完成。這就是我們試圖在服務器上執行此操作的原因。 – user1843883

+0

但是什麼原因,用例,你需要2種不同的數據類型? – Lino

回答

0

你的例子在基礎知識中是錯誤的。

您可以嘗試針對數據類型的主體。

您如何看待客戶端可以區分字段「empId」的值類型?

it 必須有一個類型 - 字符串或數字。期。

否則,它是客戶端解析器的屁股很大的痛苦。相同的JSON結構不能被解析時,一個實例相同的字段是一個字符串,而其他的它是一個數字。

+0

消費者已經在消費傳統服務。對於上面提到的情況,消費者可能只是使用字符串,並且結束了這種情況的問題。但是,如果我有字段的字符串返回類型,並且在字符串返回類型中填充的值是一個數字,那麼舊服務就有一個功能(bug)來檢測它是字符串還是數字。一些使用此服務的消費者可能會將此值用作字符串,而其他人可能會將此值用作數字。我不想因爲遺留服務中的這個功能(錯誤)而中斷任何一位消費者。 – user1843883

+0

非常糟糕的做法...無論如何,沒有任何公共工具可以執行某些與規範相關的事情來滿足任何可能的錯誤,錯誤和不良設計,人們可以製作。 – Vadim

+0

同意您的意見 – user1843883

相關問題