2016-06-17 8 views
0

私は異なるAPIからデータを取得するコンソールアプリケーションを持っています。json stringで隠れたパラメータを送信するには?

受信したデータは、カスタムクラスにマップされます。このクラスは後で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} 
+0

を隠されている_?彼らは送信されているか、送信されていません。 –

答えて

1

あなたはDataContractJsonSerializer またはDataMember/DataContract属性使用してjson.netシリアライザ(最高)

少し例で、あなたのJavaScriptSerializer変換を置き換えることができます:あなたは彼らが必要とする_but何を意味する

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

+0

これは私には半分の答えを与えました。私はそれらを除外しない他のパラマタを隠したい。何か案は?速い返信のおかげで – ThunD3eR

+0

私は何かを誤解したと思います、どのようにあなたのプロパティを隠したいですか?それらをヌル値として送信するか暗号化しますか? –

+0

あなたが達成したいことは明確ではありません。 「プロパティを隠す」とはどういう意味ですか?なぜあなたはそれらを隠したいのですか?誰から隠す? –

関連する問題