Десериализация JSON не хочет вписываться в модель - PullRequest
0 голосов
/ 29 апреля 2019

Я использую сервис, который возвращает этот JSON, когда отображение в модели берет только первый объект, но поле sms с другими объектами пусто.

Это JSON:

{
  "cliente": "999999",
  "lote_id": "99999999999999",
  "fecha_recepcion": "2019-04-29 12:31:35",
  "resultado": 0,
  "resultado_t": null,
  "sms_procesados": 2,
  "referecia": "Referencia Prueba",
  "ip": "999.999.99.9",
  "sms": {
    "1": {
      "id": "9999999",
      "numero": "999999999",
      "sms": "tests",
      "fecha_envio": "2019-04-29 12:31:35",
      "ind_area_nom": "cell",
      "precio_sms": "9.00000",
      "resultado_t": "",
      "resultado": "0"
    },
    "2": {
      "id": "8888888",
      "numero": "9999998888",
      "sms": "test",
      "fecha_envio": "2019-04-29 12:31:35",
      "ind_area_nom": "Celular",
      "precio_sms": "9.00000",
      "resultado_t": "",
      "resultado": "0"
    }
  }
}

и это моя модель:

public class ResultadoSms
{
    public string cliente { get; set; }
    public Int64 lote_id { get; set; }
    public string fecha_recepcion { get; set; }
    public Int64 resultado { get; set; }
    public object resultado_t { get; set; }
    public Int64 sms_procesados { get; set; }
    public string referecia { get; set; }
    public string ip { get; set; }
    public Sms sms { get; set; }
}

public class Sms 
{       
    public CuerpoSms CuerpoSms { get; set; }
}

public class CuerpoSms
{
    public string id { get; set; }
    public string numero { get; set; }
    public string sms { get; set; }
    public string fecha_envio { get; set; }
    public string ind_area_nom { get; set; }
    public string precio_sms { get; set; }
    public string resultado_t { get; set; }
    public string resultado { get; set; }
}

Я пытался преобразовать поле sms в список, но оно все еще пусто.Я не понимаю, в чем проблема или как я могу десериализовать объект другим, более простым способом.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Ваша модель не учитывает ключи 1, 2 и т. Д. Внутри объекта sms в JSON. Вам нужно использовать Dictionary<string, CuerpoSms>, чтобы справиться с этим.

Изменить эту строку:

public Sms sms { get; set; }

К этому:

public Dictionary<string, CuerpoSms> sms { get; set; }

Скрипка: https://dotnetfiddle.net/1XiwSF

1 голос
/ 29 апреля 2019

sms в возвращенном JSON является объектом с 2 свойствами , оба имеют ту же структуру, что и ваш CuerpoSms.

Чтобы они автоматически сериализовались в вашем коде C #, вам необходимо:

public class Sms 
{       
    [JsonProperty("1")]
    public CuerpoSms CuerpoSms1 { get; set; }

    [JsonProperty("2")]
    public CuerpoSms CuerpoSms2 { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...