J'ai un struct pour convertir un ASP.NET DateTime en temps unix comme ceci:sur mesure JSON Encode struct
public struct UnixDateTime
{
private readonly int _value;
public UnixDateTime(int value)
{
this._value = value;
}
public static implicit operator UnixDateTime(DateTime dateTime)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return new UnixDateTime((int)(dateTime - epoch).TotalSeconds);
}
public static implicit operator DateTime(UnixDateTime unixDateTime)
{
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unixDateTime);
}
public static implicit operator int(UnixDateTime unixDateTime)
{
return unixDateTime._value;
}
public static implicit operator string(UnixDateTime unixDateTime)
{
return unixDateTime._value.ToString();
}
}
Untested, s'il vous plaît n'utiliser que dans leur code sans le tester.
Quoi qu'il en soit, quand je stocke cette valeur dans un ViewModel, l'envoyer à la vue, puis appelez:
@Html.Raw(Json.Encode(Model))
Il sortira un objet vide « {} » pour cette propriété.
Quelles méthodes dois-je ajouter à ma structure pour que Json.Encode génère correctement une valeur entière? De préférence, je voudrais à pas émettre un « objet », mais plutôt une « valeur » ... donc je ne veux pas:
"Date": {"Value": 123456}
Mais plutôt:
"Date": 123456
Je sais Je peux juste ajouter un getter sur la structure pour l'amener à sortir comme ce que je ne veux pas, mais j'aimerais que cela fonctionne de la même façon que les types string ou int fonctionnent. Peut-être que ce n'est pas possible sans refaire complètement Json.Encode?
Merci!