我有一个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"}
}
答案 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;
}
我不知道它是否优雅,但它适用于我的情况。