|
|
高兴的眼镜 · momentjs ...· 1 年前 · |
|
|
深情的煎鸡蛋 · python 高光谱图像 ...· 2 年前 · |
|
|
慷慨大方的红酒 · mysql替换多个字符 ...· 2 年前 · |
|
|
跑龙套的单杠 · Java多线程18:线程池 - 五月的仓颉 ...· 2 年前 · |
我的问题是:
这是从我的WebAPI控制器发回的响应。
"[
{\"id\":\"identifier\"},
{\"name\":\"foobar\"}
]"
注意,响应包含在引号中,所有嵌入的引号都被转义。这显然是一个问题。有没有什么我可以提供给JSON.NET序列化程序的设置来防止这种情况发生?
编辑
正如p.s.w.g在他的回答中猜测的那样,我使用的是JSON.NET的
JsonConvert.SerializeObject(instance)
来执行序列化。
我这样做是因为当我构建我的自定义转换器时,我已经将它们包含在我的WepApiConfig中的JsonConvert.DefaultSettings中(显然我认为这不是问题)
我以前曾尝试将我的HttpGets的返回类型交换为“我的对象类型”,响应是我的对象的ToString() method...which的json表示,这让我知道序列化没有经过我的转换器。
将我的HttpGets的返回类型从字符串更改为“我的对象类型”,并将这些转换器直接插入到WebAPi的默认HttpConfiguration中就成功了。
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());
很简单。
发布于 2014-08-29 06:55:12
你可能会有类似这样的东西:
public string GetFoobars()
var foobars = ...
return JsonConvert.SerializeObject(foobars);
}
在本例中,您使用Json.NET将对象序列化为字符串,然后通过将结果作为字符串返回,应用编程接口控制器将字符串序列化为JavaScript字符串文字-这将导致字符串用双引号括起来,并使字符串中的任何其他特殊字符使用反斜杠进行转义。
解决方案是简单地返回对象本身:
public IEnumerable<Foobar> GetFoobars()
var foobars = ...
return foobars;
}
这将导致API控制器使用其默认设置来序列化对象,这意味着它将根据从客户端传入的参数将结果序列化为XML或JSON。
进一步阅读
发布于 2019-06-28 17:58:52
API在发送共振之前进行序列化。示例: return Ok(yourUnSerializedObject);
不需要为你做详细的说明。
发布于 2020-01-18 03:20:42
检查你的属性修饰符。举个例子:
public List<Yourobjectclass> columnaLista { get; set; }
public List<Yourobjectclass> ColumnaLista