JsonToColumnsModels.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace SqlSugar
  7. {
  8. public partial class ContextMethods : IContextMethods
  9. {
  10. public List<Dictionary<string, object>> JsonToColumnsModels(string json)
  11. {
  12. List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
  13. List<SelectModel> conditionalModels = new List<SelectModel>();
  14. if (IsArray(json))
  15. {
  16. return GetColumnsByArray(json);
  17. }
  18. else
  19. {
  20. return GetColumnsByObject(json);
  21. }
  22. }
  23. private List<Dictionary<string, object>> GetColumnsByObject(string json)
  24. {
  25. List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
  26. var dic = this.Context.Utilities.DeserializeObject<Dictionary<string,object>>(json);
  27. result.Add( GetColumns(dic));
  28. return result;
  29. }
  30. private List<Dictionary<string, object>> GetColumnsByArray(string json)
  31. {
  32. List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
  33. var jarray = this.Context.Utilities.DeserializeObject<List<Dictionary<string,object>>>(json);
  34. foreach (var item in jarray)
  35. {
  36. result.Add(GetColumns(item));
  37. }
  38. return result;
  39. }
  40. private Dictionary<string, object> GetColumns(Dictionary<string, object> dictionary)
  41. {
  42. Dictionary<string, object> result= new Dictionary<string, object>();
  43. foreach (var item in dictionary)
  44. {
  45. var value = GetValue(item);
  46. result.Add(item.Key, value);
  47. }
  48. return result;
  49. }
  50. private static object GetValue(KeyValuePair<string, object> item)
  51. {
  52. if (item.Value == null)
  53. return null;
  54. var valueString = item.Value.ToString();
  55. var vallue = Json2SqlHelper.GetValue(valueString);
  56. var type = Json2SqlHelper.GetType(valueString);
  57. return UtilMethods.ConvertDataByTypeName(type,vallue);
  58. }
  59. }
  60. }