Сериализация сервисного словаря WCF REST - PullRequest
1 голос
/ 18 октября 2019

У меня проблемы с сериализацией словаря в моей службе WCF.

[DataContract]
    public class UserInfo
    {
        [DataMember]
        public Guid ID { get; set; }

        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public IDictionary<string, List<string>> Permissions { get; set; } = new Dictionary<string, List<string>>();
    }

Это пример текущего ответа

{
    "ID": "1",
    "Name": "admin",
    "Permissions": [
        {
            "Key": "Users",
            "Value": [
                "Read",
                "Edit"
            ]
        },
        {
            "Key": "Management",
            "Value": [
                "Read"
            ]
        }
    ]
}

, и это желаемый ответ

{
    "ID": "1",
    "Name": "admin",
    "Permissions": {
        "Users": ["Read", "Edit"],
        "Management": ["Read"]
    }
}

Есть ли способ реализовать это глобально или по конкретному свойству?

1 Ответ

0 голосов
/ 23 октября 2019

Я решил это с помощью пользовательского словаря, как объяснено здесь .

Так как я создал этот тип для сериализации

AjaxDictionary<string, string[]>

Мне пришлосьдобавьте

[ServiceKnownType(typeof(string[]))]

на мой class, то есть ServiceContract для возврата ответов.

...