【问题标题】:Get JsonArray String values from HashMap <String , String>从 HashMap <String , String> 获取 JsonArray 字符串值
【发布时间】:2017-03-26 17:07:30
【问题描述】:

我有一个像这样的HashMap

Map<String , String>

当我通过键从地图中获取一个元素时,它会返回

["6"] 我只需要 6 ,而不需要 ["6"]

值是这样添加的

map.put(k , jsonarray.toString()) ; 

谢谢

【问题讨论】:

  • 该值也可以包含许多 ["2" , "4" , "1"] 等
  • 您也可以发布jsonarray.toString() 示例吗?
  • 如果某个键的值为 ["2", "4", "1"],预期的输出是什么?
  • 2 , 4 ,1 是数据集ID,这些数据集名称将被放置在一个列表中并返回给调用者
  • @YarpoleCosgrave 考虑对已发布的答案发表评论,以了解您的问题是否已解决。

标签: java arrays json hashmap


【解决方案1】:

然后您有 2 个选项将您的地图更改为

Map<String,Integer>

然后你需要在里面放一个 int 值

或者在获取值时使用:

Integer.valueOf(map.get("key"));

这仅在您的 json 中的 String 只是一个 int 的情况下才有效 - 我们您将得到一个异常!

【讨论】:

  • 我觉得最好换地图。
  • 是否可以像在 Interger 中那样放一个 json 数组?
  • 在将其放入地图之前,您必须先对其进行解析
【解决方案2】:

您可以使用Integer#parseInt(String)String 转换为Integer

int value = Integer.parseInt(map.get("key"));

【讨论】:

  • 这种方法行不通。除非你先解析字符串。在第一次通过时, [ 被评估并返回错误 [ in not an integer ,与 " .. 相同,由@J​​. N 突出显示
【解决方案3】:

您只会得到您在地图中实际输入的值。因此,在存储时不要使用 toString(),您可以只输入 6 的值,对于多个值,您可以放入整数值数组。

【讨论】:

    【解决方案4】:

    将您的Map 更改为StringJsonArray 并直接存储JsonArray 而不是将其转换为String

     Map<String , JsonArray>
    

    使用您的 Map 键,迭代您的 JsonArray 对象

    JsonArray jsonArray;
    Iterator<JsonElement> it = jsonArray.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }
    

    【讨论】:

    • 我认为在大多数情况下,这将是最好的答案之一,但对于我的用例,它将 json 解析从解析层移动到传输层
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 2013-10-05
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多