Десериализация данных JSON из веб-сервиса - PullRequest
0 голосов
/ 03 декабря 2018

глобально, у меня есть следующий объект:

public class Geraet
{
    public long Geraetenr { get; set; }
    public int Typ { get; set; }
    public string Platz { get; set; }
    public string Bezeichnung { get; set; }
    public int Tr { get; set; }
    public string Ip { get; set; }
    public string Bespielt { get; set; }
}

Я заполняю список этих объектов, сериализую их и отправляю их через веб-сервис:

    [HttpGet]
    public IHttpActionResult Get_Feedback()
    {

        List<Geraet> geraeteliste = null;

        try
        {
            geraeteliste = GetSpielgeraeteFromDatabase();
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.Message);
        }
        if (geraeteliste == null)
        {
            return Ok("No record found!");
        }
        else
        {
            var json = Newtonsoft.Json.JsonConvert.SerializeObject(geraeteliste);
            return Json(json);
        }
    }

Данные, полученные веб-сервисомвыглядит следующим образом:

"[{\" Geraetenr \ ": 123456789, \" Typ \ ": 61, \" Platz \ ": \" 1-01 \ ", \" Bezeichnung "\ ": \" CSII ADM430 \ ", \" Tr \ ": 3, \" Ip \ ": \" 123.123.123.123 \ ", \" Bespielt \ ": \" 0 \ "}, {\" Geraetenr \": 987654321, \" Typ \ ": 61, \" Platz \ ": \" 2-12 \ ", \" Bezeichnung \ ": \" M-BOX PUR + GOLD \ ", \" Tr \ ": 3,\ "Ip \": \ "124.124.124.124 \", \ "Bespielt \": \ "0 \"}] "

В моем приложении Xamarin у меня есть тот же объект, который указан выше, ипытаясь десериализовать его:

    private List<Geraet> GetSpielgeraeteFromWebservice()
    {
        List<Geraet> geraeteliste;

        var request = HttpWebRequest.Create(Constants.GeraetelistServicePath);
        request.ContentType = "application/json";
        request.Method = "GET";

        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
        {
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                var json = reader.ReadToEnd();

                geraeteliste = JsonConvert.DeserializeObject<List<Geraet>>(json);             
            }
        }

        return geraeteliste;
    }  

К сожалению, я получаю ошибку времени выполнения в строке geraeteliste = JsonConvert.DeserializeObject<List<Geraet>>(json);, говорящую:

Исключение необработанного: Newtonsoft.Json.JsonSerializationException: Ошибка преобразования значения"[{" Geraetenr ": 123456789," Typ ": 61," Platz ":" 1-01 "," Bezeichnung ":" CSII ADM430 "," Tr ": 3," Ip ":" 123.123.123.123 ","Bespielt": "0"}, { "Geraetenr": 987654321, "Тип": 61, "Платц": "2-12","Bezeichnung": "M-BOX PUR + GOLD", "Tr": 3, "Ip": "124.124.124.124", "Bespielt": "0"}] "для ввода 'System.Collections.Generic.List`1[GroceryList.Classes.Geraet].Путь '', строка 1, позиция 3421.

Отправка / получение информации работает, в противном случае сообщение об ошибке будет в строке var json = reader.ReadToEnd();, иначе я не получу правильные значения всообщение об ошибке.Так что-то с десериализацией не работает.Может кто-нибудь может помочь и сказать мне, в чем проблема?Почему он не может обратить?Это правильный порядок и правильные значения?

С уважением

...