ASP.NET MVC: Json(IDictionary<string, string>) konvertiert array von Schlüssel-Wert-Paare
Wenn ich eine IDictionary<string, string> MyDictionary
wie diese:
{
{"foo", "bar"},
{"abc", "xyz"}
}
und in meiner MVC-controller habe ich eine Methode so auf:
[HttpPost]
public JsonResult DoStuff()
{
return Json(MyDictionary);
}
...es sendet etwas zurück wie:
[
{"Key":"foo", "Value":"bar"},
{"Key":"abc", "Value":"xyz"}
]
Ich hatte erwartet (und will) sowas wie:
{
"foo":"bar",
"abc":"xyz"
}
Wie kann ich dies erreichen?
UPDATE
So ist dies direkt im Zusammenhang mit der Tatsache, dass dieses Projekt eine Aktualisierung von einer ASP.NET 2.0-Anwendung, die eine benutzerdefinierte JSON-serializer; offenbar für rückwärts Kompatibilität, die Sie gemacht, dass die Standard-JSON-serializer in das MVC-Anwendung. Schließlich bin ich überschrieb, dass das Verhalten in meinem controller mit der Json.NET Ergebnis, und mein problem war gelöst.
- Sie können einen Blick auf diesen Eintrag: stackoverflow.com/questions/32253259/...
- Das ist das dictionary-format von
DataContractJsonSerializer
. Sind Sie mit dieser serializer? Siehe Json serialisierungsprogramme in ASP.NET und andere eine Liste der serialisierungsprogramme in verschiedenen asp.net -Plattformen. Die genaue asp.net Technik verwenden Sie? - Als am besten ich kann sagen asp.net-mvc nicht verwendet
DataContractJsonSerializer
standardmäßig in jeder version. Könnte Sie überschreiben die Standard-Verhalten? Siehe ASP.NET MVC: Steuerung der Serialisierung der Eigenschaft Namen mit JsonResult für ein Beispiel. Verwenden Json.NET stattdessen finden Sie unter Mit JSON.NET als Standard-JSON-serializer in ASP.NET MVC 3 - ist es möglich?. - Es ist durchaus möglich... es gibt eine Menge von seltsamen Einstellungen in diesem Projekt. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit der Standard-Json-serializer(Json.Net), sollte Es wieder Sie, die unten JSON-Struktur aus einer
Dictionary<string, string>
Mit Ihrem action-Methode:
Überprüft dies in MVC5 und MVC6.
Wenn Sie weiterhin Probleme haben, warum nicht eine einfache POCO mit den Eigenschaften, die Sie wollen?
Und erstellen Sie ein Objekt, setzen Sie die Eigenschaft Werte und senden, die als JSON.