Entfernen Sie null-Eigenschaften eines Objekts geschickt, um Json MVC
namespace Booking.Areas.Golfy.Models
{
public class Time
{
public string time { get; set; }
public int holes { get; set; }
public int slots_available { get; set; }
public decimal? price { get; set; }
public int? Nextcourseid { get; set; }
public bool ShouldSerializeNextcourseid
{
get
{
return this.Nextcourseid != null;
}
}
public bool? allow_extra { get; set; }
public bool ShouldSerializeallow_extra
{
get
{
return this.allow_extra != null;
}
}
}
}
namespace Booking.Areas.Golfy.Controllers
{
public class TeetimesController : Controller
{
//
//GET: /Golfy/Teetimes/
public ActionResult Index(
string date,
int? courseid = null,
int? clubid = null,
int? holes = null,
int? available = null,
int? prices = null
)
{
var DateFrom = DateTime.ParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
Teetimes r = BookingManager.GetBookings(new Code.Classes.Params.ParamGetBooking()
{
ClubID = clubid
, DateFrom = DateFrom
, DateTo = DateFrom.AddDays(1)
, GroundID = courseid
});
return Json(r, JsonRequestBehavior.AllowGet);
}
}
}
Den webservice oben gibt einen json-string mit mehreren Herzen lag Zeit.
Möchte ich Eigenschaften Nextcourseid und allow_extra werden Links aus der Ausgabe, wenn Ihre Werte sind null.
Versuchte ich ShouldSerializeXxx aber es scheint nicht zu funktionieren.
Zur info: ich habe auch versucht [ScriptIgnore] die Arbeit ist aber nicht Bedingung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden Sie die Standard -
Json ActionResult
zu entfernen null Eigenschaften.Können Sie einen Blick auf JSON.NET, es hat ein Attribut, das Sie einstellen können, entfernen Sie die Eigenschaft, wenn es null
Oder wenn Sie nicht wollen, um andere Bibliotheken können Sie erstellen Sie Ihre eigenen benutzerdefinierte json-ActionResult und registrieren Sie einen neuen Konverter für den Standard -
JavaScriptSerializer
wie diese:Und jetzt in Ihre Ansicht:
JsonProperty
Einstellung funktionierte perfekt. Danke.Ich hatte immer Probleme mit framework-embedded json serializer, deshalb habe ich Json.NET. Hier ein kleines Beispiel, das testen dieser zwei serialisierungsprogramme:
Müssen Sie fügen Sie
System.Web.Extensions
als Abhängigkeit und installierenJson.Net
mit nuget zu haben, die beispielsweise das arbeiten.Hier einige Unterlagen form Json.NET und Rahmen-embedded-serializer
Die gegebenen Antworten sind interressant, aber ich hatte begonnen, mit DataContractJsonSerializer in der Zwischenzeit.
Und es macht den job gut, ohne die Notwendigkeit, mit einem Dritten Rahmen (obwohl JSON.Net scheint, wie weit verbreitet).