Gson десериализовать картусериализовано WCF Rest service - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть Служба Отдыха WCF.Я хотел бы использовать его с устройства Android.Для этого я выбрал библиотеку gson.Казалось, все работало нормально, пока я не захотел вернуться из своего сервиса Object Contain Map.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 голосов
/ 22 декабря 2011

Другим способом сделать это может быть добавление собственной реализации Map / Dictionary, которая расширяет ArrayList, и фактически представляет собой список KVPair, где KVPair выглядит так:

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

Не знаю, элегантно ли это, но в моем случае это сработало.

0 голосов
/ 18 ноября 2011

Gson не имеет встроенной функции для сериализации карты Java в формат JSON, отформатированный по желанию.(Функция обработки ключей сложной карты не решает эту проблему.) Необходима пользовательская обработка сериализации / десериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...