2013-09-07 11 views
6

私は、メールキャンペーンに連絡先を追加するには、電子メールサービスのGetResponseに送信するJSONリクエストを作成しようとしてるの作成。特定JSON形式

私が達成しようとしているフォーマットは、私は、このセットアップに

private class AddContactRequest 
{ 
    public string campaign { get; set; } 
    public string action { get; set; } 
    public string name { get; set; } 
    public string email { get; set; } 
    public int cycle_day { get; set; } 
    public string ip { get; set; } 
} 

をcontructedそれで

AddContactRequest add = new AddContactRequest(); 
add.campaign = campaignID; 
add.action = action 
add.name = contact_name; 
add.email = email; 
add.cycle_day = cycle_day; 
add.ip = ip_value; 

string json = new JavaScriptSerializer().Serialize(add); 

ここJSONのように、これを満たさHow to create JSON string in C#add_contact

[ 
    "API_KEY", 
    { 
     "campaign" : "CAMPAIGN_ID", 
     "action" : "action_value", 
     "name"  : "name_value", 
     "email"  : "email_value", 
     "cycle_day" : cycle_day_value, 
     "ip"  : "ip_value", 
     "customs" : [ 
      { 
       "name"  : "name_1_value", 
       "content" : "content_1_value" 
      }, 
      { 
       "name"  : "name_2_value", 
       "content" : "content_2_value" 
      } 
     ] 
    } 
] 

のためであります i期待通りの私にはわからない何

{"campaign":"my_test_campaign","action":"standard","name":"Test Name","email":"[email protected]","cycle_day":0,"ip":"10.1.0.5"} 

は、適切にそれの前にAPI_KEY文字列を追加する方法です。

をプロパティの名前を付けずに前面に追加するにはどうすればいいですか?JavaScriptSerializer()を使用するのが理想です。

答えて

4

objectのコレクションを作成し、"API_KEY"を最初のエントリとして渡し、addオブジェクトを2番目のエントリとして渡します。

AddContactRequest add = new AddContactRequest(); 
add.campaign = campaignID; 
add.action = action 
add.name = contact_name; 
add.email = email; 
add.cycle_day = cycle_day; 
add.ip = ip_value; 

List<object> SerializedThingy = new List<object> 
{ 
    "API_KEY", 
    add 
}; 

string json = new JavaScriptSerializer().Serialize(SerializedThingy); 
+0

パーフェクト:私はこのような何かをしようとするだろう。あなたは今日私に何か新しいことを教えてくれました。 – Kirk

+0

また、より良いjsonシリアライザを見てください。 http://www.nuget.org/packages/newtonsoft.json/ – bluetoft

1

ドキュメントからは、JSONオブジェクトを独自の方法でラッピングしているようです。 JSONは '{'ではなく、 '['で始まる必要があります。

string json = new JavaScriptSerializer().Serialize(SerializedThingy); 
string req = "[ \"API_KEY\", " + json + " ]";