是否将对象转换为数组[Java]?

是否将对象转换为数组[Java]?,java,arrays,object,Java,Arrays,Object,我有一个对象(对象o),当我调用o.toString()时,它会打印: {data-ved=0EMIuCBcoAA, data-pid=23, href=https://mail.google.com/mail/?tab=wm, class=gb_P} 正如您所看到的,这个对象中似乎有一个字符串数组。有没有办法直接将对象转换为字符串[] 预期结果将是一个字符串[],其中包含以下内容: data-ved=0EMIuCBcoAA data-pid=23 href=https://mail.goog

我有一个
对象(对象o)
,当我调用
o.toString()
时,它会打印:

{data-ved=0EMIuCBcoAA, data-pid=23, href=https://mail.google.com/mail/?tab=wm, class=gb_P}
正如您所看到的,这个对象中似乎有一个字符串数组。有没有办法直接将对象转换为字符串[]

预期结果将是一个字符串[],其中包含以下内容:

data-ved=0EMIuCBcoAA
data-pid=23
href=https://mail.google.com/mail/?tab=wm
class=gb_P
目前,我正在使用
Regex
提取我需要的字符串部分(作为数组)

有更好的方法吗


如果重要的话,对象是从
Selenium

中的
JavaScript执行器返回的,从注释跟踪中可以看出,返回的对象似乎是
Map
(可能是
Map
Map
)。因此,您可以执行以下操作:

if( o instanceof Map ) {
  Map map = (Map)o; //If you know the generic type you could use Map<String, Object> etc. instead
  String dataVed = (String)map.get("data-ved");
  ...
}
if(o映射实例){
Map Map=(Map)o;//如果知道泛型类型,可以使用Map等
String dataVed=(String)map.get(“dataVed”);
...
}
正如您所看到的,转换值也是必要的,因为没有为映射提供泛型类型,因此您所知道的是键和值是任何类的对象


如果您知道应该使用什么泛型类型,您可以改进它,特别是当值类型为
String
时。不幸的是,由于类型擦除,您无法在运行时获得该类型,因此了解所需内容的唯一方法是一些文档。

从注释跟踪中可以看出,返回的对象似乎是一个
映射
(可能是
映射
映射
)。因此,您可以执行以下操作:

if( o instanceof Map ) {
  Map map = (Map)o; //If you know the generic type you could use Map<String, Object> etc. instead
  String dataVed = (String)map.get("data-ved");
  ...
}
if(o映射实例){
Map Map=(Map)o;//如果知道泛型类型,可以使用Map等
String dataVed=(String)map.get(“dataVed”);
...
}
正如您所看到的,转换值也是必要的,因为没有为映射提供泛型类型,因此您所知道的是键和值是任何类的对象


如果您知道应该使用什么泛型类型,您可以改进它,特别是当值类型为
String
时。不幸的是,由于类型擦除,您无法在运行时获取该类型,因此了解所需内容的唯一方法是一些文档。

该表示形式不一定意味着字符串数组。数据本身看起来很像JSON,所以我猜这个对象中实际包含的是一个映射。除了作为
对象之外,您没有其他信息吗(这在Java中意义不大,因为几乎所有东西都是对象)?根据你可能会得到一个
WebElement
,所以我会通过
instanceof
检查这个类,并相应地进行转换。@Thomas不太可能。返回类型为Object类型。方法签名是Object executeScript(字符串arg0,对象…arg1);我所能看到的只是返回类型是一个对象。我认为JS executor不会返回WebElement(因为您需要将驱动程序转换为JS executor),但我可能错了。请参阅我编辑的评论:您很可能会得到一个
WebElement
(您可以通过调用
o instanceof WebElement
来检查这一点)。如果不是,您应该能够通过
o.getClass()
获得该对象的类,然后使用
instanceof
并根据需要进行强制转换。“我认为JS executor不会返回WebElement(因为您需要将驱动程序强制转换为JS executor)”-如果驱动程序类实现
JavascriptExecutor
,则不需要强制转换(否则无论如何都会得到一个异常)。此外,由于接口声明它将为任何HTML元素返回
WebElement
(根据documtentation)接口的任何实现都应该做到这一点。这样,您就得到了一个
Map
,因此您应该能够通过强制转换到
Map
或者可能是
Map
并调用
et(“data-ved”)
等来获得所需的内容,例如
if(o-instanceof-Map){return((Map)o.get(“data-ved”)}
。这种表示形式不一定意味着字符串数组。数据本身看起来很像JSON,所以我猜在该对象中实际包含的是一个映射。除了它是一个
对象
(这在Java中没有多大意义,因为几乎所有东西都是一个对象)之外,没有其他信息吗?根据,您可能会得到一个
WebElement
,因此我会通过
instanceof
检查该类并进行相应的强制转换。@Thomas不是真的。返回类型是Object类型。方法签名是Object executeScript(字符串arg0,Object…arg1);我所能看到的只是返回类型是一个对象。我不认为JS executor返回WebElement(因为您需要将驱动程序转换为JS executor),但我可能错了。请参阅我编辑的评论:您很可能会得到一个
WebElement
(您可以通过调用
o instanceof WebElement
来检查这一点)。如果不是,您应该能够通过
o.getClass()
获取该对象的类,然后使用
instanceof
并根据需要进行强制转换。“我认为JS executor不会返回WebElement(因为您需要将驱动程序强制转换为JS executor)”-如果驱动程序类实现
JavascriptExecutor
,则不需要强制转换(否则无论如何都会得到一个异常)。此外,由于接口声明它将为任何HTML元素返回
WebElement
(根据documtentation)接口的任何实现都应该做到这一点。这样,您就得到了一个
Map
,因此您应该能够通过强制转换到
Map
或者可能是
Map
并调用
et(“data-ved”)
等来获得所需的内容,例如
if(o-instanceof-Map){return((Map)o.get(“data-ved”);}