2017-02-22 7 views
0

我試圖從json元素的值的排序順序生成JSON字符串。這裏是我的JSON通過傑森生成的Json應該按照Json元素值的排序順序

"customer": { 
     "id": "168252733", 
     "firstName": "OTP", 
     "lastName": "KPI", 
     "contact": { 
     "emailAddress": "[email protected]", 
     "phone": [ 
      { 
      "number": "2567775065", 
      "type": "primary" 
      }, 
      { 
      "number": "2567775065", 
      "type": "secondary" 
      } 
     ] 
     } 
    } 

此JSON可以包含多個客戶記錄,但我想生成JSON應該也在名字,姓氏或電子郵件取決於用戶喜好的排序順序。

我是JACKSON的新手,不知道如何實現它。任何人都可以幫助我解決這個問題。 在此先感謝。

+1

最簡單的方法是在序列化之前對List或數組進行排序。 –

+0

感謝您的回覆Jo。但我不想排序清單。無論如何,傑克遜無法做到這一點。 –

+0

我想你可以使用[客戶序列化程序](http://wiki.fasterxml.com/JacksonHowToCustomSerializers)在序列化過程中複製和排序列表。技巧將試圖訪問序列化程序中的用戶首選項。 –

回答

1

選項1:

簡單的辦法,是用Arrays.sort(T[] a, Comparator<? super T> c)排序基於連載之前,用戶偏好客戶名單。

您需要創建一個比較爲每個用戶的偏好,然後用Arrays.sort(customerList, firstNameComparator)

選項2:

如果你想從JSON,那麼你需要註冊自定義解串器和您的CustomerListDeserializer產生排序列表客戶的排序列表客戶的

SimpleModule simpleModule = new SimpleModule().addDeserializer(CustomerList.class, new CustomerListDeserializer()); 
     mapper.registerModule(smipleModule); 

方案3:

網絡首先反序列化到客戶對象列表,然後應用排序。