| 

.NET C# Java Javascript Exception

4
Es geht um den
using System.Web.Script.Serialization;

MyClass myclass = new MyClass(){ name = "boerner", appointment = DateTime.Now };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string s = serializer.Serialize(myclass);

class MyClass
{
public string name { get; set; }
public DateTime appointment { get; set; }
}


appointment soll nun "yyyy-MM-dd" formatiert im JSON-String stehen. Also rauskommen soll soetwas:

{"name":"boerner", "appointment":"2011-05-13"}


Per JavaScriptConverter kann man zwar die Formatierung beeinflussen, aber dann müsste man einen Converter für die Klasse MyClass schreiben. Denn JavaScriptConverter.Serialize gibt ein IEnumerable<string, object> zurück.
Hat jemand einen Idee, wie man das hinkriegt? Geht das mit dem JavaScriptSerializer überhaupt? Oder muss man da von Hand ran?
News:
13.05.2011
tboerner 509 8
1 Antwort
3
Leider geht das nicht. Aber du kannst deine Code recht leicht auf JSON.Net umstellen mit der das was du willst funktioniert.

JSON.Net - Features
- Flexible JSON serializer to convert .NET objects to JSON and back again
- LINQ to JSON for reading and writing JSON
- Writes indented, easy to read JSON
- Convert JSON to and from XML
- Supports Silverlight and Windows Phone

Good (Date)Times with Json.NET

Beispiel:

public class LogEntry {
public string Details { get; set; }
public DateTime LogDate { get; set; }
}

[Test]
public void WriteJsonDates() {
LogEntry entry = new LogEntry {
LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),
Details = "Application started."
};

string defaultJson = JsonConvert.SerializeObject(entry);
// {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}

string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());
// {"Details":"Application started.","LogDate":new Date(1234656000000)}

string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());
// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}

}
13.05.2011
Floyd 14,6k 3 9
Klasse Sache. Vielen Dank. JSON.NET hatte ich nicht im Blick.
tboerner 13.05.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH