568 Stimmen

Wie kann ich JSON mit C# deserialisieren?

Ich habe den folgenden Code:

var user = (Dictionary<string, object>)serializer.DeserializeObject(responsecontent);

Die Eingabe in responsecontent ist JSON, aber es wird nicht richtig in ein Objekt deserialisiert. Wie sollte ich es richtig deserialisieren?

-1voto

cr1pto Punkte 491

Ich denke, die beste Antwort, die ich gesehen habe, war @MD_Sayem_Ahmed.

Ihre Frage ist "Wie kann ich Json mit C# parsen", aber es scheint, wie Sie wollen Json dekodieren. Wenn Sie wollen, um es zu dekodieren, ist Ahmeds Antwort gut.

Wenn Sie versuchen, dies in ASP.NET Web Api zu erreichen, ist es am einfachsten, ein Datenübertragungsobjekt zu erstellen, das die Daten enthält, die Sie zuweisen möchten:

public class MyDto{
    public string Name{get; set;}
    public string Value{get; set;}
}

Sie fügen einfach den application/json-Header zu Ihrer Anfrage hinzu (wenn Sie z.B. Fiddler verwenden). Sie würden dies dann in ASP.NET Web API wie folgt verwenden:

//controller method -- assuming you want to post and return data
public MyDto Post([FromBody] MyDto myDto){
   MyDto someDto = myDto;
   /*ASP.NET automatically converts the data for you into this object 
    if you post a json object as follows:
{
    "Name": "SomeName",
      "Value": "SomeValue"
}
*/
   //do some stuff
}

Das hat mir sehr geholfen, als ich an meiner Web-Api gearbeitet habe und hat mir das Leben sehr erleichtert.

-2voto

Jidheesh Rajan Punkte 4544
var result = controller.ActioName(objParams);
IDictionary<string, object> data = (IDictionary<string, object>)new System.Web.Routing.RouteValueDictionary(result.Data);
Assert.AreEqual("Table already exists.", data["Message"]);

-3voto

Kobie Williams Punkte 364
 using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(user)))
 {
    // Deserialization from JSON  
    DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(UserListing))
    DataContractJsonSerializer(typeof(UserListing));
    UserListing response = (UserListing)deserializer.ReadObject(ms);

 }

 public class UserListing
 {
    public List<UserList> users { get; set; }      
 }

 public class UserList
 {
    public string FirstName { get; set; }       
    public string LastName { get; set; } 
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X