2015-04-24 49 views
-2
經過時間以毫秒爲單位用3位精度

我利用番石榴的Stopwatch類返回經過時間以毫秒這樣的:的Json序列化的Java

long handledDuration = handleMessageWatch.elapsed(TimeUnit.MICROSECONDS); 

我想現在要做的就是日誌格式化像 「mmmm.MMM」(M =米利斯,M =百萬分之一),爲一些JSON對象的一部分經過時間

{ 
    "handledPayloadId":"RQ6fa00a1f-a02d-45bd-b13e-2d9f65af4882", 
    "handledDuration":1.430 // duration in milliseconds (1 ms and 430 micros) 
} 

{ 
    "handledPayloadId":"RQ6fa00a1f-a02d-45bd-b13e-2d9f65af4882", 
    "handledDuration":1200.430 // duration in milliseconds (1200 ms and 430 micros) 
} 

對於使用番石榴秒錶和Google Gson序列化程序的應用程序,這將是一個有效的實現?

我需要先通過DecimalFormat類將其轉換嗎?

+0

如何將微秒轉換爲毫秒?然後接受精度不固定的事實,所以'1200.43'與'1200.430'相同。如果這是不可接受的,請更改爲使用字符串JSON類型..或甚至保留爲整數。 – user2864740

回答

1

什麼將是一個有效的實現

如果你想它真的有效,那麼你需要寫一個GSON適配器每個類存儲你long handledDuration,以便它會從不同的處理一個「普通」長。這是可能的,也是一個可能的災難,因爲它太簡單了。

可能有一個註釋@GsonSerializeAsLeozillaWants,這將註冊與Gson和專門處理long,但AFAIK你必須自己實現此功能。

你可以編寫一個類DurationMillisAndMicros和一個適配器,它應該很簡單,並且除了使用一個對象代替原始的快速對象之外。 DecimalFormat,String.format或手動轉換通過/1000%1000是你的問題最少。

或者您可以簡單地忘記它,或者甚至在每個持續時間使用納米(與System.nanoTime一致)並讓它成爲。這是我可能會做的。

+0

我想我會去除1000,這是最簡單和仍然有效,我會說。 – leozilla