On Thursday, February 13, 2014 12:27:59 AM UTC+5:30, Eric Sosman wrote:
On 2/12/2014 1:37 PM, markspace wrote:
On 2/12/2014 12:38 AM, Ojesh Dugar wrote:
Basically, I am able to access Bugzilla Webservice API through java
code(xmlrpc) and in return i get a object of <<class
java.util.HashMap>>. According to Bugzilla documentation two items
are returned, bugs and faults, both are array of hashes and I want to
access these. Thanks.
Cast to a HashMap and iterate over all of its keys.
(not tested):
// create bug
Object createResult = rpcClient.execute("Bug.search", new
Object[]{bugMap});
//createResult.toString();
HashMap bugs = (HashMap)createResult;
for( Object key : bugs.keySet() ) {
System.out.println( "Key "+key.getClass().getName()
+ "= "+key
+ ", value "+ bugs.get( key ).getClass().getName()
+ "= "+ bugs.get( key )
);
}
More info here:
http://www.mkyong.com/java/how-to-loop-a-map-in-java/
This probably won't work as written. The original post said
createResult.toString() produced "[Ljava.lang.Object;@2ee5e48a",
indicating that rpcClient.execute() returns an Object[], that
is, an array of Object references. (To those surprised that an
array of Objects is itself an Object: Someday it will all make
sense, I promise.) So what he needs to do is cast the returned
value to an Object[]:
Object[] array = (Object[]) createResult;
... then iterate over the contents of the array:
for (Object obj : array) {
... and then (assuming the Objects in the array are HashMaps as
advertised, or in any case *some* kind of Maps):
Map bugs = (Map) obj;
... and *then* he can iterate over the entries, either in the
manner markspace shows or by using the key/value pairs directly:
for (Map.Entry ent : bugs.entrySet()) {
Object key = ent.getKey();
Object val = ent.getValue();
...
--
Eric Sosman
esosman@comcast-dot-net.invalid
this line itself gives an error.
Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to [Ljava.lang.Object;