Webapi+Newtonsoft.Json 几个简单运用

类:
public class UserInfo
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

        public DateTime Date { get; set; } = DateTime.Now;
    }

api接口:
public class ValuesController : ApiController
{
public List<UserInfo> GetUserList()
        {
            List<UserInfo> List = new List<Controllers.UserInfo>() {
                 new UserInfo() { ID =1, Age=18, Name="123" },
                 new UserInfo() { ID =2, Age=19, Name="456" },
                 new UserInfo() { ID =3, Age=17, Name="789" },
                 new UserInfo() { ID =4, Age=18, Name="444" },
            };

            return List;
        }
}

调用http://localhost:54561/api/values返回值:
[{"ID":1,"Name":"123","Age":18,"Date":"2019-02-27T09:36:17.702676+08:00"},{"ID":2,"Name":"456","Age":19,"Date":"2019-02-27T09:36:17.702676+08:00"},{"ID":3,"Name":"789","Age":17,"Date":"2019-02-27T09:36:17.702676+08:00"},{"ID":4,"Name":"444","Age":18,"Date":"2019-02-27T09:36:17.702676+08:00"}]

正常webapi是直接返回xml,在启动文件中配置了下

//让API直接出json数据,放弃XML格式
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

返回的只有json。

引用Newtonsoft.Json

OptIn

所有的成员不会被序列化,类中的成员只有标有特性JsonProperty的才会被序列化,

当类的成员很多,但客户端仅仅需要一部分数据时,属性加上特性JsonProperty,返回Json的时候就出标记了特性的属性。

类加上特性[JsonObject(MemberSerialization.OptIn)]

属性ID加上特性[JsonProperty]

[{"ID":1},{"ID":2},{"ID":3},{"ID":4}]

OptOut

默认值,类中所有公有成员会被序列化,如果不想被序列化,可以用特性JsonIgnore,

如果不需要某些属性,属性上加上JsonIgnore,返回Json的时候不会输出该属性

类加上特性[JsonObject(MemberSerialization.OptOut)]

属性ID加上特性[JsonIgnore]

[{"Name":"123","Age":18,"Date":"2019-02-27T10:03:06.0355105+08:00"},{"Name":"456","Age":19,"Date":"2019-02-27T10:03:06.0355105+08:00"},{"Name":"789","Age":17,"Date":"2019-02-27T10:03:06.0355105+08:00"},{"Name":"444","Age":18,"Date":"2019-02-27T10:03:06.0355105+08:00"}]

要修改输出的名字,不就能改Class的属性的名字

属性Date加上特性[JsonProperty(PropertyName = "Time")]

[{"ID":1,"Name":"123","Age":18,"Time":"2019-02-27T10:30:27.4491914+08:00"},{"ID":2,"Name":"456","Age":19,"Time":"2019-02-27T10:30:27.4491914+08:00"},{"ID":3,"Name":"789","Age":17,"Time":"2019-02-27T10:30:27.4491914+08:00"},{"ID":4,"Name":"444","Age":18,"Time":"2019-02-27T10:30:27.4491914+08:00"}]

Data变成了Time

添加一个枚举

public enum Sex:byte
    {
        女 = 0,
        男 = 1
    }

类加入枚举属性:
        public Sex Sex { get; set; } = (Sex)1;//给个默认值

[{"ID":1,"Name":"123","Age":18,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":1},{"ID":2,"Name":"456","Age":19,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":1},{"ID":3,"Name":"789","Age":17,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":1},{"ID":4,"Name":"444","Age":18,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":1}]

枚举属性加入:[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]

[{"ID":1,"Name":"123","Age":18,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":"男"},{"ID":2,"Name":"456","Age":19,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":"男"},{"ID":3,"Name":"789","Age":17,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":"男"},{"ID":4,"Name":"444","Age":18,"Date":"2019-02-27T10:47:38.8418998+08:00","Sex":"男"}]

猜你喜欢

转载自blog.csdn.net/cmhdl521/article/details/87966471