#c# #json #asp.net-web-api
#c# #json #asp.net-web-api
Вопрос:
Я отправляю формат 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().Resu<
JObject jxxx = JsonConvert.DeserializeObject<dynamic>(requestBody);
Пожалуйста, обратитесь к обновленному коду
Комментарии:
1. Путем создания этой структуры и сериализации.
2. Пожалуйста, покажите нам какой-нибудь код, включая ваши соответствующие модели и методы контроллера.
3. @Amy
var requestBody = requestContent.Content.ReadAsStringAsync().Resu< JObject jxxx = JsonConvert.DeserializeObject<dynamic>(requestBody);
здесь requestContent имеет формат json4. Возвращаемый вами json будет результатом возвращаемой вами модели, если вы следуете обычным соглашениям. Как сказала @Amy, нам нужно увидеть ваши модели и действия контроллера
5. @GregH я создал класс для студентов со всеми полями
Ответ №1:
Вы можете использовать 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
значения.
Демонстрация здесь
Комментарии:
1. Привет, вот как я могу добавить список студентов?
2. @Chandu замените его
ToArray
наToList
, и тогда вы сможете вызватьstudents.Add(...
3. @Alexs, у меня есть еще одно сомнение. Как преобразовать все теги (ключи) в нижний регистр? Нравится
Branch to branch, Doc to doc, Description to description
4. @Chandu ты можешь использовать JsonProprrty newtonsoft.com/json/help/html/JsonPropertyName.htm
Ответ №2:
"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);