我有一个控制台应用程序,可以从不同的API获取数据。
接收到的数据被映射到一个自定义类。此类稍后被序列化为json字符串。完成此操作后,我将使用urbanShip将其推送到移动应用程序。
我的问题:
我只希望在推送到达应用程序后就可以看到message属性。所有其他属性都应包括在内,但必须将其隐藏。为了使应用程序获取有关具有ID的特定对象的信息,还需要其他属性。
我已经尝试过:我尝试在要显示/隐藏的属性上使用[JsonIgnore]
和[DataMember]
注释。但是,这没有用,我想知道我该如何做到这一点?
我的代码:
我当前正在序列化和推送的类:
[DataContract]
public class SubscriberPush
{
[DataMember]
public string TrainId { get; set; }
public string Message { get; set; }
public string Title { get; set; }
public string From { get; set; }
public string To { get; set; }
public bool LateTrain { get; set; }
public bool Canceled { get; set; }
}
设置数据:
pushSub.TrainId = trainAnnouncement.AdvertisedTrainIdent;
pushSub.Title = "the train is late";
pushSub.LateTrain = true;
pushSub.Message = "train is " + span.Minutes + " min late";
string json = Parser.ConvertToJson<SubscriberPush>(pushSub);
UrbanAirship.Push(ee.DeviceToken, json);
序列化器:
public static string ConvertToJson<T>(T obj)
{
var json = new JavaScriptSerializer().Serialize(obj);
return json.ToString();
}
JSON:
{"TrainId":"1036","Message":"train is 8 min late","Title":"the Train is late","From":null,"To":null,"LateTrain":true,"Canceled":false}
您可以用DataContractJsonSerializer或json.net序列化器(最好)替换您的JavaScriptSerializer
convert
一个使用DataMember / DataContract
属性的小例子:
http://www.newtonsoft.com/json/help/html/DataContractAndDataMember.htm
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句