我有一个像这样的JSON字符串-
{"error_1395991841806": "ErrorA", "error_1395991131941": "ErrorB", "error_1395991534713": "ErrorC", "error_1395991772241": "ErrorD"}
在上面的JSON字符串中,我具有此格式的所有键error_timestampInMilliseconds
。
现在,我想按的降序对所有键进行排序timestamp
,然后提取最新的值error_timestamp key
。意味着timestamp
与current相比,最新的是什么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正是Map
按Key
...排序的
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);
// ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句