Я пытаюсь сопоставить ответ JSON классу C# с помощью RestSharp. Я могу правильно отобразить почти все поля из ответа, однако есть несколько, а именно поля атрибутов, которые помечены как null
. Мне интересно, есть ли что-то особенное, что мне нужно сделать, чтобы справиться с этими случаями.Сопоставление атрибута JSON с пользовательским классом C#
Возвращение JSON выглядит следующим образом:
{
"Response": {
"@VersionNumber": "5.0",
"ResponseDetail": {
"CriteriaText": {
"$": "Name"
}
}
"ResultQuantity": 1,
"Result": [
{
"Id": "1234567890",
"PrimaryName": {
"OrganizationName": {
"$": "CompanyName"
}
}
}
}
}
Я могу тянуть все корректно данные, кроме всего, что является атрибутом (начинается с @ или $).
Вот как я пытаюсь отобразить ответ:
public class Response
{
public string VersionNumber { get; set; }
public ResponseDetail ResponseDetail { get; set; }
public Result Result { get; set; }
}
Я попытался добавить это выше VersionNumber [JsonProperty("@VersionNumber")]
, однако, что не увенчалась успехом, а также.
Вот мой вызов GET:
public Response GetData(string endpoint)
{
RestRequest request = new RestRequest(Method.GET)
{
RequestFormat = DataFormat.Json,
Resource = _version + endpoint,
RootElement = "Response"
};
request.AddHeader("Authorization", _token);
var response = _client.Execute<Response>(request);
if (response == null || !PassCodes.Contains(response.StatusCode))
{
return null;
}
return response.Data;
}
Любые мысли были бы полезны, спасибо заранее!
Это полезно знать. Я могу сделать это. Есть ли лучший подход к моему вопросу или это, вероятно, лучший выбор? –
@KevinMee, рекомендуется (и, возможно, единственный) способ настройки сериализации (как описано в readme: https://github.com/restsharp/RestSharp/blob/master/readme.txt). И он является гибким: может использоваться любая инфраструктура JSON, а не только Json.NET. –
благодарю вас за ответ. Я работаю над реализацией этого, но, похоже, во время моего тестирования, что теперь я не получаю данные от ответа (он все еще существует в части контента). Я что-то упустил? –