当前位置: 首页 > 知识库问答 >
问题:

< String,String >散列表中的整数对象

法镜
2023-03-14
  1. 创建一个(字符串,对象)哈希映射并放置不同类型的值。
  2. 将哈希映射序列化为 json 字符串并转换回 (字符串、字符串) 的哈希映射

当我尝试获取键“key 2”的值时,它会抛出一个异常,说“线程中的异常”main“java.lang.ClassCastExc的:java.lang.整数不能转换为java.lang.字符串”。

有没有好的方法来解释这一点?这是否意味着即使我有一个(String,String)映射,其中的值也不是必需的String?

为任何混乱道歉。如果有什么不清楚,请告诉我。

Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", 99);
map.put("key3", new Date());


JsonUtil jsonUtil = new JsonUtil();

String s = jsonUtil.toJson(map);

HashMap<String, String> newMap = jsonUtil.fromJson(s, HashMap.class);

String value = newMap.get("key2");

共有3个答案

司空海荣
2023-03-14

字符串值=newMap.get("key 2");

在这一行中,您将在hashMap中获取key2的值,然后将其分配给字符串类型变量 ,该变量无效。因为 key2的值是Integer类型,所以不能直接执行此操作。您可以将此值放入`Integer类型变量中。如下:

int value = newMap.get(“key2”);

或者,如果您想要一个通用的解决方案,以便可以将任何类型的变量分配给,那么您可以将其声明为Objecttype。如下:

< code > Object value = new map . get(" key 2 ");

彭博厚
2023-03-14

在map中,键“key2”的值是99,这是一个整数。异常可能被抛出在倒数第二行,而不是最后一行。我不完全确定为什么要序列化然后立即反序列化,但是如果您只想将 99 作为像“99”这样的字符串,那么这样做的方法是:

String value = String.valueOf(map.get("key2"));

在这种情况下,序列化和反序列化不是必需的。

更好的是,如果你只是想要一个<code>地图

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", String.valueOf(99));
map.put(new Date().toString());
堵雅健
2023-03-14

当您调用< code>fromJson(s,HashMap.class)时,您没有向解码器提供任何泛型类型信息——它看到的只是< code>HashMap,并且该调用的隐式返回类型是< code>HashMap

如果您指定涉及哪个 JsonUtil,我们也许能够提供更具体的方法;否则,您可以使用类似流转换的东西将每个值转换为 v.toString()。

 类似资料:
  • Arduino编程中使用的第二种字符串是String Object。 什么是对象? 对象是包含数据和函数的构造。 String对象可以像变量一样创建并分配值或字符串。 String对象包含函数(在面向对象编程(OOP)中称为“方法”),它们对String对象中包含的字符串数据进行操作。 下面的草图和说明将清楚说明对象是什么以及如何使用String对象。 例子 (Example) void setu

  • 概述 String对象是 JavaScript 原生提供的三个包装对象之一,用来生成字符串对象。 var s1 = 'abc'; var s2 = new String('abc'); typeof s1 // "string" typeof s2 // "object" s2.valueOf() // "abc" 上面代码中,变量s1是字符串,s2是对象。由于s2是字符串对象,s2.val

  • 概述 String.fromCharCode() 概述 String对象是JavaScript原生提供的三个包装对象之一,用来生成字符串的包装对象实例。 var s = new String("abc"); typeof s // "object" s.valueOf() // "abc" 上面代码生成的变量s,就是String对象的实例,类型为对象,值为原来的字符串。实际上,String对象的

  • 请原谅我问这个问题,但我似乎找不到这个问题的确切答案。我需要知道如何复制这个列表: 放入新列表(名字不重要)。 我已经找到了复制数组列表而不是标准列表的答案。我已经尝试了很多解决方案,但似乎都不起作用。我将感激任何帮助!

  • 主要内容:String 对象中的属性,String 对象中的方法,特殊字符JavaScript String 对象用于处理字符串,其中提供了大量操作字符串的方法,以及一些属性。 创建 String 对象的语法格式如下: var val = new String(value); var val = String(value); 其中参数 value 为要创建的字符串或字符串对象。 JavaScript 中,字符串和字符串对象之间能够自由转换,因此不论是创建字符串对象还是直