簡體   English   中英

如何使用Gson從json提取最新時間戳的值?

[英]How to extract value of a latest timestamp from a json using Gson?

我有一個像這樣的JSON字符串-

{"error_1395991841806": "ErrorA", "error_1395991131941": "ErrorB", "error_1395991534713": "ErrorC", "error_1395991772241": "ErrorD"}

在上面的JSON字符串中,我具有此格式的所有鍵error_timestampInMilliseconds

現在,我想按timestamp的降序對所有鍵進行排序,然后提取最新的error_timestamp key的值。 意味着與當前timestamp相比,無論最新timestamp是什么,我都將使用該鍵提取其值。 這可能嗎?

我將Gson用於JSON。 下面是我的代碼-

String data = new String(event.getData().getData(), Charset.forName("UTF-8"));

// here this data is my json string
System.out.println(data);

JsonObject jsonObject = gson.fromJson(data, JsonObject.class); // parse

因此,假設與當前時間戳相比,這是最新的時間戳error_1395991841806 ,我將打印出ErrorA作為其值。

您的JSON表示Map<String, String> ,並且您想要獲得最高的Key ,因此您可以嘗試將JSON反序列化為TreeMap ,而TreeMap正是按Key排序的Map

Type yourMapType = new TypeToken<TreeMap<String, String>>() {}.getType();
TreeMap<String, String> yourMap = gson.fromJson(yourJsonString, yourMapType);

String highestKey = yourMap.lastKey();
String lastError = yourMap.get(highestKey);

現在lastError應該包含"ErrorA"

請注意,我沒有嘗試過,但是我想它應該可以工作...


編輯 :如果由於某種原因您不能直接反序列化為TreeMap (盡管我猜您應該可以做到),請嘗試反序列化為通用Map ,然后從中構造TreeMap ,如下所示:

Type yourMapType = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> yourGenericMap = gson.fromJson(yourJsonString, yourMapType);
TreeMap<String, String> yourMap = new TreeMap<>(yourGenericMap);
// ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM