Как преобразовать свойства json, отформатированные в точечной нотации, в класс ac # - PullRequest
0 голосов
/ 20 декабря 2018

Я использую HttpClient для извлечения данных из API.К сожалению, я не контролирую имена свойств, все они были написаны в точечной нотации, например:

"staff":[{"responsible.user":"Y","staff.type":
    {"staff.type.mnemonic":"C","staff.type.name":"Consultant"}]

Возможно, в этом обратном вызове json есть как минимум 100 или около того свойств, подобных этому.Мне нужно вернуть обратно объект json, который удаляет точки (т. Е. Изменить responsible.user на responsibleuser). Есть ли способ сопоставить класс ac # и вернуть нужный мне формат?

У меня есть ac #класс, использующий атрибут [DataContract] и поля [Datamember(Name=)] для сопоставления значений, но когда я смотрю на возвращаемый json, у них все еще есть точки в свойствах.

Это то, что я начал работатьв моем контроллере

 using(HttpClient c = new HttpClient())
        {
            c.DefaultRequestHeaders.Authorization =
               new System.Net.Http.Headers.AuthenticationHeaderValue(
                   "Bearer",
                   "Cazqmx-TTHOOfnJy92SRng=="
               );
            var link = string.Format(AmsApiGet, "6894998", "TYEE");
            var res = await c.GetStringAsync(link);
            TaskAPI task = new TaskAPI();

            task = JsonConvert.DeserializeObject<TaskAPI>(res);

            return Ok(task);

По сути, я просто пытаюсь преобразовать имена свойств, чтобы я мог использовать модели машинописи в моем внешнем интерфейсе. Угловая сторона

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете контролировать имена свойств, полученные внешним интерфейсом, преобразовав данные в ваш собственный POCO (простой объект C #) перед преобразованием его в JSON.

TaskAPI task = new TaskAPI();

List<myPOCO> list = new List<myPOCO>();

foreach (var item in res)
  list.Add(new myPOCO(item)); //all your mapping is in the POCO Constructor

task = JsonConvert.DeserializeObject(list); //or whatever syntax it would be
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...