Gson反序列化由WCF Rest服务序列化的Map <k,v> </k,v>

时间:2011-11-17 00:37:05

标签: map gson

我有一个WCF休息服务。我想在Android设备上使用它。为此,我选择了gson库。一切似乎工作正常,直到我想从我的服务对象包含地图返回。 Gson将它序列化(并且我假设也尝试从中反序列化),如:

{"org.Mob.ComplexObject@3dac2f9c":"TAX1","org.Mob.ComplexObject@7369ca65":"TAX2"}

但是我的服务发送的json看起来像是:

{"Key":
    {"DefaultValue":"True",
     "Description":null,
     "DisplayName":"Custom Boolean",
     "FieldType":0,
     "Id":6,
     "IsReadOnly":false,
     "IsRequired":false,
     "MaxLength":null,
     "Name":"BoolVal",
     "ParamType":0},
 "Value":"True"},
{"Key":
    {"DefaultValue":"",
     "Description":null,
     "DisplayName":"Custom Text",
     "FieldType":4,
     "Id":7,
     "IsReadOnly":false,
     "IsRequired":true,
     "MaxLength":16,
     "Name":"TextVal",
     "ParamType":0},
 "Value":"sda"}
}

2 个答案:

答案 0 :(得分:0)

Gson没有内置功能可将Java地图序列化为根据需要格式化的JSON。 (handle complex map keys的功能无法解决此问题。)自定义序列化/反序列化处理是必要的。

答案 1 :(得分:0)

另一种方法是添加你自己的Map / Dictionary实现,它扩展了ArrayList,实际上是KVPair的List,KVPair看起来像:

class KVPair<K,V>{
    K Key;
    V Value;
}

我不知道它是否优雅,但它适用于我的情况。