Как я могу изменить формат JSON после запроса в C #? - PullRequest
5 голосов
/ 15 марта 2019

Я отправляю формат Json следующим образом в PostMan

    {
  "number": 2106887,
  "date": "09/10/2018",
  "degree":"BE"
  "Students": [
    {
      "Branch": "ABK015",
      "Doc": "NCE",
      "Description": "Testing",
      "dni": "1016035232",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abc@in.com",
    },
    {
      "Branch": "ABK016",
      "Doc": "NCE",
      "Description": "Testing1",
      "dni": "1016035233",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abcd@in.com",
    }
  ]
}

На уровне контроллера я проверяю все поля.После проверки, как я могу преобразовать вышеуказанную строку JSON в формат ниже

{

  "Students": [
    {
      "number": 2106887,
      "date": "09/10/2018",
      "degree":"BE"
      "Branch": "ABK015",
      "Doc": "NCE",
      "Description": "Testing",
      "dni": "1016035232",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abc@in.com",
    },
    {
      "number": 2106887,
      "date": "09/10/2018",
      "degree":"BE"
      "Branch": "ABK016",
      "Doc": "NCE",
      "Description": "Testing1",
      "dni": "1016035233",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abcd@in.com",
    }
  ]
}

И после преобразования, я хочу вставить в базу данных.Как конвертировать в c #?Пожалуйста, помогите мне.

А приведенный ниже код является классом для студентов:

public class Students
{
    [Required]
    public string Branch{ get; set; }
    [Required]
    public string Doc{ get; set; }
    [Required]
    public string Description{ get; set; }
    [Required]
    public string dni{ get; set; }
    [Required]
    public string Name{ get; set; }
    [Required]
    public string Gender{ get; set; }
    [Required]
    public string Title{ get; set; }
    [Required]
    public string email{ get; set; }
    [Required]
    public string degree{ get; set; }
    [Required]
    public string date{ get; set; }
    [Required]
    public string number{ get; set; }
}

И я здесь десериализируюсь

var requestBody = requestContent.Content.ReadAsStringAsync().Result;
            JObject jxxx = JsonConvert.DeserializeObject<dynamic>(requestBody);

Пожалуйста, обратитесь к обновленному коду

Ответы [ 2 ]

3 голосов
/ 15 марта 2019

Вы можете использовать DeserializeAnonymousType метод.Сначала создайте template объект

var template = new {number = "", date = "", degree = "", Students = new Students[0]};

, теперь десериализованный во временный объект json:

var jsonObject = JsonConvert.DeserializeAnonymousType(input, template);

После этого вы можете скопировать информацию из заголовка json в Students с помощью linq:

var students = jsonObject.Students.Select(s =>
{
    s.number = jsonObject.number;
    s.date = jsonObject.date;
    s.degree = jsonObject.degree;
    return s;
}).ToArray();

Также обратите внимание, что введенный вами JSON недействителен: в нем отсутствует запятая afetr degree значение.

Демо-версия здесь

0 голосов
/ 15 марта 2019
"Students": [
    {
      "number": 2106887,
      "date": "09/10/2018",
      "degree":"BE"
      "Branch": "ABK015",
      "Doc": "NCE",
      "Description": "Testing",
      "dni": "1016035232",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abc@in.com",
    },
    {
      "number": 2106887,
      "date": "09/10/2018",
      "degree":"BE"
      "Branch": "ABK016",
      "Doc": "NCE",
      "Description": "Testing1",
      "dni": "1016035233",
      "Name": "ABCE",
      "Gender": "M",
      "Title": "Univercity",
      "email": "abcd@in.com",
    }
  ]

А затем попробуйте это

var students = JsonConvert.DeserializeObject<Students[]>(requestBody);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...