【问题标题】:How to send hidden parameters in json string?如何在json字符串中发送隐藏参数?
【发布时间】:2016-06-17 09:47:29
【问题描述】:

我有一个从不同 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}

【问题讨论】:

  • 你是什么意思但他们需要隐藏?它们要么被发送,要么不被发送。

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


【解决方案1】:

您可以将JavaScriptSerializer 转换为DataContractJsonSerializer 或通过json.net 序列化程序(最好的)

一个使用DataMember / DataContract属性的小例子:

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

【讨论】:

  • 这给了我看起来一半的答案。我想隐藏其他不排除它们的参数。有任何想法吗?感谢您的快速回复
  • 我想我误解了一些东西,你想如何隐藏你的属性?您想将它们作为空值发送还是加密发送?
  • 不清楚你想要实现什么。 “隐藏属性”是什么意思?为什么要隐藏它们?对谁隐瞒?
  • 想象一个 webapi,它有一个表单并且在页面上有 hiddenfor 属性。它们不应显示,但需要用于其他功能。我正在尝试发送一个 json 对象,该对象由应用程序处理并仅显示例如没有“隐藏”类的数据。我正在考虑将此逻辑转移给应用程序开发人员,但很好奇这是否可以实现。
猜你喜欢
  • 1970-01-01
  • 2011-08-26
  • 2012-09-25
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多