2013-09-07 12 views
6

Sto tentando di creare una richiesta JSON da inviare al servizio di posta elettronica GetResponse per aggiungere un contatto a una campagna di posta.Creazione di un formato JSON specifico

Il formato che sto cercando di realizzare è per 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" 
      } 
     ] 
    } 
] 

seguito How to create JSON string in C# ho contructed questa configurazione

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; } 
} 

e riempito questo in questo modo

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); 

Qui JSON i s come previsto

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

Quello che non so è come aggiungere correttamente la stringa API_KEY alla parte anteriore di esso.

Come posso modificare questo per aggiungere il API_KEY alla parte anteriore di esso senza un nome di proprietà collegato ad esso, idealmente utilizzando JavaScriptSerializer()?

risposta

4

Quello che dovete fare è creare una collezione di tipo object e passare "API_KEY" come prima voce e la vostra add oggetto come la seconda voce.

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

Perfetto. Oggi mi hai insegnato qualcosa di nuovo. – Kirk

+0

Inoltre ... guarda in un serializzatore json migliore. http://www.nuget.org/packages/newtonsoft.json/ – bluetoft

1

Dalla documentazione, sembra che stiano avvolgendo l'oggetto JSON in modo proprietario. JSON deve iniziare con un '{', non un '['. Vorrei provare qualcosa del genere:

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