2017-01-05 2 views
0

Ich bin ziemlich neu zu Json, ich habe ein Programm, das eine Put-Anfrage mit einigen JSON-Daten macht.Schwierigkeiten mit C# zu Json

Ich brauche die equivelant daraus zu machen: { "project": { "date_closed":"2017-01-05"} }

und dies ist mein Code i anpassen müssen ..

object instructionData = new { date_closed = DateTime.Now.ToString("yyyy-MM-dd") }; 

var instructionString = JsonConvert.SerializeObject(instructionData); 
StringContent instruction = new StringContent(instructionString, Encoding.UTF8, "application/json"); 

, die derzeit mehr als i scheinen, um herauszufinden kann ...

Ich habe einige Konverter betrachtet, die nur Klassen erstellt. Und diejenigen, die ich nicht wirklich weiß, was zu tun ist ..

Ich hoffe, es gibt jemanden, der bereit ist zu helfen.

Bearbeiten Ich erstelle eine Antwort, die gesendet wird.

var response = instructions.GetPutResponse(instructions.GetCleanUpProjectsRequestUrl(projectId), instructions.GetJsonInstructions(instructionData), client); 

GetPutResponse Methode:

public HttpResponseMessage GetPutResponse(string requestUrl, HttpContent httpContent, HttpClient client) 
    { 
     return client.PutAsync(requestUrl, httpContent).Result; 
    } 
+0

'' instructionData ist ein anonymes Objekt - oder ist dies bedeutete, die JSON zu sein, die in den 'put' Antrag enthalten? – Alex

+0

Die Anweisung ist in der Put-Anfrage enthalten. – andrelange91

+0

können Sie mehr von Ihrem Code zeigen - ist das eine Controller-Methode? Bitte bearbeiten Sie Ihre Frage, um die vollständige Methode zu zeigen – Alex

Antwort

1
public class Project 
{ 
    public string date_closed { get; set;} 
} 

public class MyClass 
{ 
    public Project project { get; set;} 
} 

var obj = new MyClass(); 
obj.project = new Project(); 
obj.project.date_closed = DateTime.Now.ToString("yyyy-MM-dd"); 

var instructionString = JsonConvert.SerializeObject(obj); 
+0

Ich liebe einen guten Downvote ohne Kommentar ... smh – chambo

+0

Dies hat tatsächlich das ursprüngliche Problem lösen. obwohl ich auf etwas weniger Umfangreiches gehofft hätte. Aber daran muss ich weiterarbeiten. Thx für die Lösung ^^ – andrelange91

1

Wie einer der Kommentare oben schlägt String-Verkettung verwendet, die jedoch fairen Ansatz scheint, wenn Sie diesen Weg gehen wollen, dann können Sie nicht, was zu erreichen folgende Snippet Sie wollen. Ersetzen Sie unter der Linie

object instructionData = new { date_closed = DateTime.Now.ToString("yyyy-MM-dd") }; 

mit

var instructionData = new { projects = new { date_closed = DateTime.Now.ToString("yyyy-MM-dd") } }; 
+0

es generiert dies: {projects = {{date_closed = 2017-01-05}}} was scheint eine schlechte Anfrage zurückzugeben .. wissen Sie, warum es doppelte Klammern um das Datum generiert? – andrelange91

+0

Ich bin mir nicht sicher, was Sie anders machen, aber Ausgabe der Serialisierung, d. H. Der Wert von instructionString sollte {"project": {"date_closed": "2017-01-05"}} sein. Ich habe es getestet und die richtige Zeichenfolge erzeugt. –

+0

Ich habe die gleiche Sache eingefügt, aber es erzeugt doppelte Klammern ... das ist wirklich wierd .. – andrelange91

Verwandte Themen