Я пытаюсь десериализовать строку JSON, полученную от вызова REST, в чистый объект C#, называемый User. Однако у JSON, который возвращается, есть много «пуха», которое я хочу игнорировать.Deserialise JSON игнорирование обертки
JSON строка выглядит следующим образом:
{
"Items": [
{
"LoginID": "A",
"EmployeeID": "1",
"FirstName": "A",
"LastName": "A",
"MiddleName": "",
"PrimaryEmail": "[email protected]",
"Active": true,
"CellPhoneNumber": null,
"OrganizationUnit": null,
"ID": null,
"URI": null
},
{
"LoginID": "B",
"EmployeeID": "2",
"FirstName": "B",
"LastName": "B",
"MiddleName": "",
"PrimaryEmail": "[email protected]",
"Active": true,
"CellPhoneNumber": null,
"OrganizationUnit": null,
"ID": null,
"URI": null
}
],
"NextPage": null
}
Я хочу, чтобы преобразовать его в массив объектов пользователя, которые определяются как:
[DataContract]
public class User
{
[DataMember]
public string LoginID { get; set; }
[DataMember]
public string EmployeeID { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string MiddleName { get; set; }
[DataMember]
public string PrimaryEmail { get; set; }
[DataMember]
public bool Active { get; set; }
[DataMember]
public object CellPhoneNumber { get; set; }
[DataMember]
public object OrganizationUnit { get; set; }
[DataMember]
public object ID { get; set; }
[DataMember]
public object URI { get; set; }
}
Я стараюсь избегать использования Newtonsoft .Json, так как я хочу создать как можно меньше зависимостей.
Использование стандарта DataContractJsonSerializer
не будет работать, поскольку он использует возвращаемый поток данных. Я бы хотел избежать создания класса, чтобы JSON соответствовал моей структуре классов и никогда не использовал его, особенно если эти классы подвергаются пользователям кода.
Вкратце, могу ли я только десериализировать определенную часть строки JSON без Newtonsoft.Json? Если нет, то в чем лучшая практика и самый чистый способ десериализации JSON?
Благодаря
Ненавижу, чтобы разбить его вам, но вам нужно будет сделать некоторые программы для достижения своей цели. Очень часто используется для сопоставления с внешними данными во внутренние представления, поэтому вам, вероятно, понадобится это сделать. И тривиально превратить строку в MemoryStream, поэтому не позволяйте этому сдерживать вас от DataContractSerializer. – Crowcoder
Поскольку это будет библиотека, я думаю о том, чтобы просто сосать ее и наполнить все корневые объекты внутренним классом, чтобы пользователь не видел эти классы. Это немного грязно, хотя я надеялся придумать более чистое решение. Если это невозможно без использования строки JSON, эти корневые классы могут быть лучшим и безопасным решением. – plusheen