Как распарсить Json - C# (181093)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Подскажите пожалуйста, как распарсить этот json (получаю в метод "public IHttpActionResult UpdateClient(dynamic client)" из клиентской части).
Листинг программы
  1. {{
  2. "client": [
  3. {
  4. "name": "ClientGuid",
  5. "value": "1b8fd911-c7ac-4341-b104-c790504854ca"
  6. },
  7. {
  8. "name": "F",
  9. "value": "Прокопенко"
  10. },
  11. {
  12. "name": "I",
  13. "value": "Тамара"
  14. },
  15. {
  16. "name": "O",
  17. "value": "Георгиевна"
  18. },
  19. {
  20. "name": "DateOfBirth",
  21. "value": "01.10.1944"
  22. },
  23. {
  24. "name": "Gender",
  25. "value": "true"
  26. },
  27. {
  28. "name": "advertising",
  29. "value": ""
  30. },
  31. {
  32. "name": "Comment",
  33. "value": ""
  34. },
  35. {
  36. "name": "Address",
  37. "value": ""
  38. },
  39. {
  40. "name": "doc_Serial",
  41. "value": ""
  42. },
  43. {
  44. "name": "doc_Number",
  45. "value": ""
  46. },
  47. {
  48. "name": "doc_Date",
  49. "value": ""
  50. },
  51. {
  52. "name": "doc_Issue",
  53. "value": ""
  54. },
  55. {
  56. "name": "IsSmsAgree",
  57. "value": "false"
  58. },
  59. {
  60. "name": "IsMailAgree",
  61. "value": "false"
  62. }
  63. ]
  64. }}
На выходе необходимо получить два класса:
Листинг программы
  1. public class ClientInfoDTO
  2. {
  3. /// <summary>
  4. /// Guid клиента
  5. /// </summary>
  6. [JsonProperty("ClientGuid")]
  7. public Guid ClientGuid { get; set; }
  8. /// <summary>
  9. /// Фамилия клиента
  10. /// </summary>
  11. [JsonProperty("F")]
  12. public string F { get; set; }
  13. /// <summary>
  14. /// Имя клиента
  15. /// </summary>
  16. [JsonProperty("I")]
  17. public string I { get; set; }
  18. /// <summary>
  19. /// Отчество клиента
  20. /// </summary>
  21. [JsonProperty("O")]
  22. public string O { get; set; }
  23. /// <summary>
  24. /// Полные ФИО клиента
  25. /// </summary>
  26. public string Fio { get { return ((this.F + " " + this.I).Trim() + " " + this.O).Trim(); } }
  27. /// <summary>
  28. /// Пол клиента (true - M, false - Ж)
  29. /// </summary>
  30. [JsonProperty("Gender")]
  31. public bool Gender { get; set; }
  32. /// <summary>
  33. /// Id возрастной группы, к которой принадлежит клиент
  34. /// </summary>
  35. [JsonProperty("AgeGroupId")]
  36. public long AgeGroupId { get; set; }
  37. /// <summary>
  38. /// Дата рождения клиента
  39. /// </summary>
  40. [JsonProperty("DateOfBirth")]
  41. public DateTime DateOfBirth { get; set; }
  42. /// <summary>
  43. /// Индекс телефона, отмеченного главным
  44. /// </summary>
  45. [JsonProperty("MainPhone")]
  46. public int MainPhone { get; set; }
  47. /// <summary>
  48. /// Считаем, что элемент с индексом [0] - это
  49. /// всегда телефон, определенный с помощью АОН
  50. /// </summary>
  51. [JsonProperty("Phones")]
  52. public List<string> Phones { get; set; }
  53. /// <summary>
  54. /// Другие контакты (почта, Skype и прочее)
  55. /// </summary>
  56. [JsonProperty("Contacts")]
  57. public List<string> Contacts { get; set; }
  58. /// <summary>
  59. /// Комментарий
  60. /// </summary>
  61. [JsonProperty("Comment")]
  62. public string Comment { get; set; }
Листинг программы
  1. public class ClientCard : IValidatableObject
  2. {
  3. [JsonProperty("Id")]
  4. [Range(1, long.MaxValue)]
  5. public long Id { get; set; }
  6. [JsonProperty("ClientGuid")]
  7. public Guid ClientGuid { get; set; }
  8. [JsonProperty("Address")]
  9. public string Address { get; set; }
  10. [JsonProperty("doc_Name")]
  11. public string doc_Name { get; set; }
  12. [JsonProperty("doc_Serial")]
  13. public string doc_Serial { get; set; }
  14. [JsonProperty("doc_Number")]
  15. public string doc_Number { get; set; }
  16. [JsonProperty("doc_Issue")]
  17. public string doc_Issue { get; set; }
  18. [JsonProperty("doc_Date")]
  19. public DateTime doc_Date { get; set; }
  20. [JsonProperty("adv_InviteId")]
  21. [Range(1, int.MaxValue)]
  22. public int adv_InviteId { get; set; }
  23. [JsonProperty("advTitle")]
  24. public string AdvTitle { get; set; }
  25. [JsonProperty("IsMailAgree")]
  26. public bool IsMailAgree { get; set; }
  27. [JsonProperty("IsSmsAgree")]
  28. public bool IsSmsAgree { get; set; }
  29. [JsonProperty("InputTime")]
  30. public DateTime InputTime { get; set; }
ClientInfoDTO cl = Newtonsoft.Json.JsonConvert.DeserializeObject(client); не работает
пишет Наиболее подходящий перегруженный метод для System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(string) имеет несколько недопустимых аргументов
Пробую так:
Листинг программы
  1. string q = client.ToString();
  2. ClientInfoDTO cl = Newtonsoft.Json.JsonConvert.DeserializeObject<ClientInfoDTO>(q);
Получаю пустой ClientInfoDTO cl, что не так?
В идеале было бы сразу в метод получать объект нужного класса (public IHttpActionResult UpdateClient([FromBody] ClientInfoDTO client)), но такая штука тож не работает, приходит пустой объект...
В идеале было бы сразу в метод получать объект нужного класса (public IHttpActionResult UpdateClient([FromBody] ClientInfoDTO client))
Возможно для этого необходимо на стороне JS формировать в ручную объект ClientInfoDTO?

Решение задачи: «Как распарсить Json»

textual
Листинг программы
  1. var toSend = Tools.getFormatFormData($("#UpdateForm").serializeArray());

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут