我正在使用优秀的Json.Net库来序列化由实体框架生成的实体.我使用以下代码来执行此操作:
using (MyVoucherEntities context = new MyVoucherEntities())
{
List<MyObject> list = context.MyObjects.ToList();
string json = JsonConvert.SerializeObject(list);
}
Run Code Online (Sandbox Code Playgroud)
一切顺利我的意思是,对象被正确序列化除了一个想法:它添加转义字符"\",这使我在客户端反序列化时遇到噩梦.
[
{
\"$id\": \"1\",
\"CreationDate\": \"\\\/Date(1293186324257+0000)\\\/\",
\"ImageUrl\": \"http:\/\/www.google.com\",
\"Title\": \"Here is a title\"
} ]
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么以及如何摆脱这些转义字符斜杠"\"?
我想将ServiceStack的默认格式设置为JSON,而不是从浏览器访问服务时通常返回的HTML格式的响应.我知道这可以通过发送?format = json参数或将Accept标头设置为application/json在每个请求中指定.有没有办法改变这一点,而不必依赖请求中的这些提示?
我正在使用ServiceStack将一些对象序列化和反序列化为JSON.考虑这个例子:
public class Container
{
public Animal Animal { get; set; }
}
public class Animal
{
}
public class Dog : Animal
{
public void Speak() { Console.WriteLine("Woof!"); }
}
var container = new Container { Animal = new Dog() };
var json = JsonSerializer.SerializeToString(container);
var container2 = JsonSerializer.DeserializeFromString<Container>(json);
((Dog)container.Animal).Speak(); //Works
((Dog)container2.Animal).Speak(); //InvalidCastException
Run Code Online (Sandbox Code Playgroud)
最后一行抛出InvalidCastException,因为Animal字段被实例化为Animal类型,而不是Dog类型.有什么办法可以告诉ServiceStack保留这个特定实例属于Dog类型的信息吗?