Десериализация данных json из веб-сервиса

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

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);:

Unhandled Exception: Newtonsoft.Json.JsonSerializationException: Error converting value "[{"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"}]" to type 'System.Collections.Generic.List`1[GroceryList.Classes.Geraet]'. Path '', line 1, position 3421.

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

С наилучшими пожеланиями

это должно работать, вы можете проверить, что возвращается в reader.ReadToEnd ();

Negi Rox 03.12.2018 14:28

Подскажите, как это проверить? Я попытался присвоить TextView полную строку: FindViewById <TextView> (Resource.Id.textView) .Text = GetSpielgeraeteFromWebservice () {string json; var request = HttpWebRequest.Create (Constants.GeraetelistServicePath); request.ContentType = "application / json"; request.Method = "ПОЛУЧИТЬ"; using (HttpWebResponse response = request.GetResponse () as HttpWebResponse) {using (StreamReader reader = new StreamReader (response.GetResponseStream ())) {json = reader.ReadToEnd ();); }} return json.ToString (); };

Sam 03.12.2018 15:10

Но теперь сообщение об ошибке сообщает мне: Необработанное исключение: System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Sam 03.12.2018 15:12

Сначала инициализируйте свой список. Поместите var abc = JsonConvert.DeserializeObject <List <Geraet>> (json); И тогда geraetelist = abc;

Wasif Mahmood Mustafa 03.12.2018 16:22

В методе вы должны присвоить значение по умолчанию любой переменной

Negi Rox 04.12.2018 06:26
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
5
39
0

Другие вопросы по теме