如何在 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