如何在json字符串中发送隐藏参数?

时间:2016-06-17 09:47:29

标签: c# json asp.net-mvc urbanairship.com

我有一个控制台应用程序,可以从不同的API获取数据。

接收的数据将映射到自定义类。该类稍后被序列化为json字符串。完成后,我使用urbanShip将其推送到移动应用程序。

我的问题:

我只想在推送到应用程序后看到消息属性。应包括所有其他属性,但需要隐藏它们。其他属性需要应用程序获取有关具有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}

1 个答案:

答案 0 :(得分:1)

您可以JavaScriptSerializer替换DataMember / DataContract转化为DataContractJsonSerializer 或者通过json.net序列化程序(最好的)

使用XDocument doc = XDocument.Load(@"C:\temp\image.xml"); var lv1s = from lv1 in doc.Descendants("field") select new { Header = lv1.Attribute("type").Value, Children = lv1.Descendants("value") }; StringBuilder result = new StringBuilder(); foreach (var lv1 in lv1s) { result.AppendLine(lv1.Header); foreach (var lv2 in lv1.Children) result.AppendLine(" " + lv2.Attribute("type").Value); } Console.WriteLine(result.ToString()); Console.ReadLine(); 属性的一个小例子:

http://www.newtonsoft.com/json/help/html/DataContractAndDataMember.htm