C# десериализация JSON Строка в объект - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать приложение для извлечения определенной информации из Azure. Я начал с информации об арендаторах для тестирования, но у меня возникла проблема с десериализацией строки JSON для объекта. Я просматриваю несколько примеров и не могу позволить им работать. Не могли бы вы подсказать мне, если я пишу нехарактерно для Объекта или есть какие-либо проблемы с JSON String?

public class JSONValues
{
    IEnumerable<TenantDTO> value { get; set; }
}
public class TenantDTO
{
    public string id { get; set; }
    public string tenantId { get; set; }
    public string countryCode { get; set; }
    public string displayName { get; set; }
    public string tenantCategory { get; set; }
    public IEnumerable<String> domains { get; set; }
}

Для чтения JSON Я использую:

var obj = JsonSerializer.Deserialize<JSONValues>(strJSON);

где str JSON:

   {
    "value": [{
            "id": "/tenants/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "countryCode": "US",
            "displayName": "xxxxx",
            "domains": ["xxxxxxxxxx.onmicrosoft.com", ...., "tenantCategory": "Home"
            }]
    }

, но тоже не работает.

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Вы должны добавить public в качестве спецификатора доступа для value свойство

public class JSONValues
{
    public IEnumerable<TenantDTO> value { get; set; }
}
0 голосов
/ 27 марта 2020

Если вы измените определение класса для объекта, десериализация не удастся.

Чтобы проверить ваши вещи, сначала напишите a json, а затем снова десериализируйте:

var json = JsonConvert.SerializeObject( new JSONValues() );
var obj = JsonConvert.DeserializeObject<JSONValues>( json );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...