如何在 json 字符串中发送隐藏参数?
How to send hidden parameters in json string?
我有一个控制台应用程序可以从不同的 API 获取数据。
接收到的数据映射到自定义 class。这个 class 稍后被序列化为 json 字符串。完成后,我使用 urbanShip 将其推送到移动应用程序。
我的问题:
我只想在推送到达应用程序后看到消息 属性。应包括所有其他属性,但需要隐藏它们。应用程序需要其他属性才能获取有关具有 Id 的特定对象的信息。
我试过:
我尝试在我想要 shown/hidden 的属性上使用 [JsonIgnore]
和 [DataMember]
注释。然而,这没有用,我想知道我怎样才能做到这一点?
我的代码:
我目前正在连载推送的class:
[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}
您可以将 JavaScriptSerializer
转换为 DataContractJsonSerializer
或者通过 json.net 序列化器(最好的)
一个使用 DataMember / DataContract
属性的小例子:
http://www.newtonsoft.com/json/help/html/DataContractAndDataMember.htm
我有一个控制台应用程序可以从不同的 API 获取数据。
接收到的数据映射到自定义 class。这个 class 稍后被序列化为 json 字符串。完成后,我使用 urbanShip 将其推送到移动应用程序。
我的问题:
我只想在推送到达应用程序后看到消息 属性。应包括所有其他属性,但需要隐藏它们。应用程序需要其他属性才能获取有关具有 Id 的特定对象的信息。
我试过:
我尝试在我想要 shown/hidden 的属性上使用 [JsonIgnore]
和 [DataMember]
注释。然而,这没有用,我想知道我怎样才能做到这一点?
我的代码:
我目前正在连载推送的class:
[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}
您可以将 JavaScriptSerializer
转换为 DataContractJsonSerializer
或者通过 json.net 序列化器(最好的)
一个使用 DataMember / DataContract
属性的小例子:
http://www.newtonsoft.com/json/help/html/DataContractAndDataMember.htm