使用gson java解析和获取嵌套json对象
我有一个json文件:
{
"Update tree": {
"average time": 0.01610115085649609,
"best time": 0.003310859220941582,
"count": 651,
"success rate": 100,
"worst time": 0.621779361692829
},
"Update renderables": {
"average time": 0.1988377572034353,
"best time": 0.0003510859220941582,
"count": 649,
"success rate": 100,
"worst time": 12.8709652214104
},
"Before render": {
"average time": 0.5206290903024032,
"best time": 0.01522995241633128,
"count": 188,
"success rate": 100,
"worst time": 81.06473259514415
},
"Rendering": {
"average time": 4.425231035278629,
"best time": 0.4979532268296139,
"count": 214,
"success rate": 100,
"worst time": 71.34537426614806
},
"After render": {
"average time": 0.06479598048728916,
"best time": 0.0301288189105684,
"count": 563,
"success rate": 100,
"worst time": 0.6413134310963844
}
}
我想计算每个json对象中所有平均值的平均值,如何迭代json对象
我试图把所有的平均值加起来,计算出它们的平均值
编辑:
我有一个for循环,我想遍历每个对象(不是得到它的成员名,而是遍历对象,得到值,然后求和):
for(int i=0; i<json.size(); i++){
sumAllAverages(json.getAsJsonObject());
}
private static void sumAllAverages(JsonObject asJsonObject) {
sum += Float.parseFloat(asJsonObject.get("average time").toString());
}
# 1 楼答案
这就是我在杰克逊的做法,格森应该相当类似
# 2 楼答案
使用GSON,您可以将其反序列化为以下映射:
getResourceStreamReader(“file.json”)只是从资源文件中获取json的一个辅助方法。它可以是字符串或任何读取器
要获得所有平均时间(例如):
例如,要检查此地图的平均值,可以执行以下操作:
这将产生:
此外,还可以使用reduce对所有值求和,得到总平均时间
检查一下:
你会看到:
注意:即使在一个λ中,所有这些计算都可以用更少的线来完成,但为了清晰和更容易理解,我已将相位分割