go之包引用、"实体类"的使用套路(struct)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go之包引用、"实体类"的使用套路(struct)相关的知识,希望对你有一定的参考价值。
参考技术A 首先我们看下包下面看下go里面包的创建和使用
接下来复制这个目录地址到goland的ide里面直接open这个路径地址
否则会执行失败
可以发现同包下面的文件里面的方法可以直接相互调用 不用引入包
但是我们想要在main函数里面输出我们别的包下面的方法
则如要引入相应的包
首先go里面没有public private这些关键字
但是要想在不同的包下面调用方法 需要将相应的方法名写成大写字母开头的
也就是我们写的getUser方法要改成GetUser这样才能在main函数里面调用
实例化结构体可以有很多方法(现在没学到指针)
看下如何做
首先来到UserService
EF实体类,设置导航属性,导致序列化时出现"循环引用"错误,及序列化时间格式解决方案
三个实体类,学生类(Student),班级类(StudentClass),年级类(Grade)
学生类与班级类为多对一的关系,班级表的主键为学生表的外键,年级表的主键为学生表的外键
public class Student { [Column("StudentId")] public int Id { get; set; } [Required] [StringLength(200)] public string _Name { get; set; } public int _Sex { get; set; } public DateTime _Birthday { get; set; } public DateTime _AddTime { get; set; } public virtual Department Department { get; set; } public virtual Grade Grades { get; set; } public virtual StudentClass studentclass { get; set; } } public class StudentClass { [Key] [Column("ClassId")] public int Id { get; set; } [Required] [StringLength(30)] public string ClassName { get; set; } public virtual ICollection<Student> student { get; set; } public virtual Department department { get; set; } public virtual Grade grade { get; set; } } public class Grade { [Key] public int GradeId { get; set; } [StringLength(30)] [Required] public string GradeName { get; set; } [StringLength(200)] public string GradeExplain { get; set; } public virtual ICollection<Student> student { get; set; } public virtual List<StudentClass> studentclass { get; set; } public virtual Department department { get; set; } }
查询学生实体类,获取学生实体列表:
var Studentlist = db.Students.OrderByDescending(s => s.Id).Skip(IntDataPageSize * (IntDataPageIndex - 1)).Take(IntDataPageSize).ToList();
使用Newtonsoft.Json反序列化,给前端返回json字符串
string json = JsonConvert.SerializeObject(Studentlist );
报错,循环引用
解决方案:
JsonSerializerSettings jsSettings = new JsonSerializerSettings(); jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; string Datastr = JsonConvert.SerializeObject(classlist, jsSettings);
这样返回json成功,但是列表里面有时间,时间格式异常,没有显示正确的时间格式,
经过摸索,找到解决方案,直接上代码:
JsonSerializerSettings jsSettings = new JsonSerializerSettings(); jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; jsSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; string Datastr = JsonConvert.SerializeObject(Studentlist,Formatting.Indented,jsSettings);
问题解决!
有认说,使用这种方案,不能反序列化,目前没实践过,但是在查找资料的时候,有篇文章,介绍了这种情况的解决方案,直接上地址:
https://blog.csdn.net/xxdddail/article/details/82252765,有空可以实践一下
以上是关于go之包引用、"实体类"的使用套路(struct)的主要内容,如果未能解决你的问题,请参考以下文章