Ошибка Newtonsoft. Json .JsonSerializationException при десериализации объекта Json - PullRequest
0 голосов
/ 21 января 2020

У меня возникла проблема при попытке отправить конверт Docusign с пользовательской почтой получателя (с помощью receientMailNotification) через службу API. Мой контроллер получает запрос правильно, но перед отправкой в ​​службу docusign он десериализуется в объект, и вот тогда возникает ошибка.

**JSON Request:**


"Recipients": [{
            "Order": 1,
            "Name": "Andre Test ",
            "Email": "andre@test.com",
            "SignerType": "SIGNER",
            "DocusignSignerType": 0,
            "SignatureType": "ELECTRONIC",
            "EtapaFinalizada": false,
            "EmailNotification":{
                "emailBody": "SIGN AS SIGNER",
                "emailSubject": "SIGNER SIGNATURE REQUIRED"
            }
        },
        {
            "Order": 2,
            "Name": "Luis Teste",
            "Email": "luis@test.com",
            "SignerType": "WITNESS",
            "DocusignSignerType": 0,
            "SignatureType": "ELECTRONIC",
            "EtapaFinalizada": false,
            "EmailNotification": {
                "emailBody": "SIGN AS WITNESS",
                "emailSubject": "WITNESS SIGNATURE REQUIRED"
            }
        }
    ]

Дает мне ошибку:

'Cannot deserialize the current JSON object 
(e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[eSignature.
Providers.Docusign.Entities.RecipientEmailNotification]'

Я не использую список <> или массив любого типа. это просто стандартное свойство, вложенное в другое.

Пробовал решение, перечисленное здесь , но все равно получаю ошибку.

Использование Json2CSharp дает мне ту же структуру как мой текущий класс, поэтому я предполагаю, что это правильно Json.

РЕДАКТИРОВАТЬ: Обратите внимание, что я даже не объясняю массив или список в свойстве класса:

public class Destinatario
{
    public int Order { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string SignerType{ get; set; }
    public int DocusignSignerType{ get; set; }
    public string SignatureType{ get; set; }
    public bool EtapaFinalizada { get; set; }
    public RecipientEmailNotification EmailNotification { get; set; }
}

1 Ответ

0 голосов
/ 28 января 2020

Получатели JSON выглядит следующим образом:

"recipients": {
        "signers": [{
                "email": "test1@email.com",
                "name": "Name 1",
                "recipientId": "1",
                "routingOrder": "1",
                "tabs": {
                    "signHereTabs": *[{
                        "xPosition": "100",
                        "yPosition": "100",
                        "documentId": "1",
                        "pageNumber": "1"
                    }]
                }
            },
            {
                "email": "test2@email.com",
                "name": "Name 2",
                "recipientId": "2",
                "routingOrder": "2",
                "tabs": {
                    "initialHereTabs": *[{
                        "xPosition": "100",
                        "yPosition": "200",
                        "documentId": "1",
                        "pageNumber": "1"
                    }],
                    "signHereTabs": [*{
                        "xPosition": "200",
                        "yPosition": "200",
                        "documentId": "1",
                        "pageNumber": "1"
                    }]
                }
            }
        ],
        "carbonCopies": [{
                "email": "test3@email.com",
                "name": "Name 3",
                "recipientId": "3",
                "routingOrder": "3"
            },
            {
                "email": "test*4@email.com",
                "name": "Name 4",
                "recipientId": "4",
                "routingOrder": "3"
            }
        ]
    } 

У вас нет разделения на разных типов получателей, поэтому ваш JSON недействителен.

Пожалуйста, посмотрите https://developers.docusign.com/esign-rest-api/guides/features/recipients для получения дополнительной информации.

...