[英]How to serialize json string using GSON and extract key and value from it?
[英]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.