2013-09-07 23 views
6

Ich versuche, eine JSON-Anfrage zu erstellen, die an den E-Mail-Dienst GetResponse gesendet wird, um einen Kontakt zu einer Mailkampagne hinzuzufügen.Erstellen eines bestimmten JSON-Formats

Das Format, das ich zu erreichen bin versucht für 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" 
      } 
     ] 
    } 
] 

How to create JSON string in C# Nach ich dieses Setup contructed

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

und füllte diese wie so

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

Hier json i s wie erwartet

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

Was ich weiß nicht, wie richtig die API_KEY String an dem vor ihm hinzuzufügen.

Wie kann ich dies ändern, um die API_KEY an der Vorderseite hinzuzufügen, ohne einen Eigenschaftsnamen, idealerweise mit JavaScriptSerializer()?

Antwort

4

Sie müssen eine Sammlung vom Typ object erstellen und als ersten Eintrag "API_KEY" übergeben und Ihr add Objekt als zweiten Eintrag.

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

Perfect. Du hast mir heute etwas Neues beigebracht. – Kirk

+0

Auch ... schau in einen besseren Json Serializer. http://www.nuget.org/packages/newtonsoft.json/ – bluetoft

1

Aus der Dokumentation sieht es so aus, als würden sie das JSON-Objekt proprietär umhüllen. JSON muss mit '{', nicht a '[' beginnen. Ich würde etwas wie dieses versuchen:

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