一,前言
最近做項(xiàng)目采用Json形式和其他客戶端交互,借助于Newtonsoft.Json 。
由于業(yè)務(wù)場(chǎng)景不同,輸出的Json內(nèi)容也不同。要想忽略的屬性,可以借助Newtonsoft.Json的特性,在實(shí)體前面添加特性[JsonIgnore]即可,但有時(shí)候會(huì)根據(jù)業(yè)務(wù)需求,在不同的地方輸出同一個(gè)實(shí)體中不同的屬性,所以添加特性的方式顯然不能滿足要求。例如user表,在A場(chǎng)景下需要password;B場(chǎng)景下不需要。
二,解決辦法
可以重寫(xiě)Newtonsoft.Json的DefaultContractResolver類(lèi)。
步驟一:繼承DefaultContractResolver
新建類(lèi)繼承Newtonsoft.Json的類(lèi) DefaultContractResolver,重寫(xiě)CreateProperties方法,代碼如下:
/// /// Json分解器 /// public class JsonPropertyContractResolver : DefaultContractResolver { IEnumerabl