diff options
Diffstat (limited to 'lib/soap/mapping/factory.rb')
-rw-r--r-- | lib/soap/mapping/factory.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/soap/mapping/factory.rb b/lib/soap/mapping/factory.rb index 509fe369c4..f181773687 100644 --- a/lib/soap/mapping/factory.rb +++ b/lib/soap/mapping/factory.rb @@ -356,14 +356,21 @@ class HashFactory_ < Factory unless node.type == MapQName return false end - if node.key?('default') + if node.class == SOAPStruct and node.key?('default') return false end obj = create_empty_object(obj_class) mark_unmarshalled_obj(node, obj) - node.each do |key, value| - obj[Mapping._soap2obj(value['key'], map)] = - Mapping._soap2obj(value['value'], map) + if node.class == SOAPStruct + node.each do |key, value| + obj[Mapping._soap2obj(value['key'], map)] = + Mapping._soap2obj(value['value'], map) + end + else + node.each do |value| + obj[Mapping._soap2obj(value['key'], map)] = + Mapping._soap2obj(value['value'], map) + end end return true, obj end |