2013-09-07 15 views
6

Próbuję utworzyć żądanie JSON do wysłania do usługi poczty e-mail GetResponse w celu dodania kontaktu do kampanii pocztowej.Tworzenie określonego formatu JSON

Format Próbuję osiągnąć to za 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" 
      } 
     ] 
    } 
] 

Po How to create JSON string in C# I contructed tej konfiguracji

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

i wypełnione tak jak to

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

Tutaj json i s zgodnie z oczekiwaniami

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

Co mi się nie wiedzieć, jak prawidłowo dodać ciąg API_KEY do przodu.

Jak mogę to zmienić, aby dodać API_KEY z przodu bez nazwy właściwości, najlepiej przy użyciu JavaScriptSerializer()?

Odpowiedz

4

Należy utworzyć kolekcję typu object i jako pierwszą pozycję podać "API_KEY", a drugą jako obiekt add.

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

Idealny. Nauczyłeś mnie dzisiaj czegoś nowego. – Kirk

+0

Również ... spójrz na lepszy serializator json. http://www.nuget.org/packages/newtonsoft.json/ – bluetoft

1

Z dokumentacji wygląda na to, że owijają obiekt JSON w zastrzeżony sposób. JSON musi zaczynać się od "{", a nie "[". Chciałbym wypróbować coś takiego:

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