番石榴Spliter正在给我一个收藏,但我想要一个HashMap

问题描述 投票:0回答:1

我正在尝试将JSON字符串(由Web服务在HTTP响应上返回)转换为HashMap。在Python中,我可以简单地使用json.loads(string_response),它会给我一个很好的字典。我试图在Java中找到类似的东西。

我的片段是 -

String result = "{\"packetsReceived_Audio\":\"\",\"packetsReceived_Screen\":\"\",\"packetsReceived_Video\":\"\",\"packetsSent_Audio\":\"\",\"packetsSent_Screen\":\"\",\"packetsSent_Video\":\"\",\"sequenceNumber\":\"0\"}";
Map map = Splitter.on(",").withKeyValueSeparator(":").split(result);

正如下面的评论之一指出它应该已经返回哈希映射,它实际上不是。它返回给我一个集合,每个项目包含子项 - “键”和“值”。为清楚起见,请参见附图。我期待的是HashMap。

Debug window from IntelliJ

我知道我可以添加另一个步骤来创建一个通常的Map但我想检查框架中是否有可用的东西。

谢谢!

java guava
1个回答
3
投票

在调用withKeyValueSeparator后,Splitter会返回一张地图。查看{}中的灰色文本,其中说明了地图变量的类型。这是一个实现地图的不可修改的地图。您也会看到条目集,因为您的IDE会内省不可修改映射的内部实现。

无论哪种方式,我认为你最好使用专门为解析json而构建的库。它会处理像包含冒号的json值这样的极端情况。这里有一些examples in Jackson

© www.soinside.com 2019 - 2024. All rights reserved.