У меня здесь странная проблема с JSON. Я вызываю веб-службу REST из своего кода на C#, используя RestSharp (v104.4), и вызов работает нормально.RestSharp не может автоматически автоматически десериализовать мой ответ JSON, но JSON.NET может - почему?
Проблема с возвратом JSON - если я разрешу RestSharp «автоматически» декодировать его - он не работает. Если я десериализую JSON, я возвращаюсь вручную, используя JSON.NET, он работает отлично. Зачем?
Мой запрос RestSharp:
RestRequest request = new RestRequest(MyUrl, Method.GET);
request.AddHeader("Authorization", "Bearer " + token);
IRestResponse<JsonResponse> response = _restClient.Execute<JsonResponse>(request);
Это сырье JSON я вернусь из этого разговора:
{ "roomURL":"https://dev.mycompany.com/room/abc123", "text":"Click here. ....." }
Используя этот класс, я пытаюсь иметь RestSharp автоматически десериализации этот ответ:
public class JsonResponse {
public string RoomUrl { get; set; }
public string Text { get; set; }
}
Но использование RestSharp - response.Data
У меня есть null
Значение для RoomUrl
.
Однако, если я использую Json.NET вручную преобразовали ответ в JsonResult
, обе части информации (RoomUrl
и Text
) не распознан - никаких проблем вообще.
var result = JsonConvert.DeserializeObject<JsonResponse>(response.Content);
Здесь result.RoomUrl
получает возвращенный URL без каких-либо помех.
Я просто немного озадачен, почему RestSharp неправильно десериализует JSON, возвращенный в объект JsonResponse
- любые идеи?
Я также попытался положить [JsonProperty("roomURL")]
на строку RoomUrl
в JsonResponse
- но это не имеет никакого значения, похоже.
так что десеррилизатор restsharp ожидает, что свойства начнутся с нижнего регистра? – ps2goat
restsharp deserializer не будет отображать сопоставление между 'RoomUrl' и' roomURL', потому что он не следует этим правилам отображения в wiki: https://github.com/restsharp/RestSharp/wiki/Deserialization –