如何轻松返回混合了普通对象和应该在JSON流中内联发送的文字JSON字符串的响应,完全没有解释或编码?
public JsonResult Something() {
var literalJson = "{\"a\":1,\"b\":2}";
return Json(new {
result = "success",
responseTime = DateTimeOffset.Now(),
data = literalJson // only, don't JSON-encode this, emit it as-is
});
}
创建LiteralJson
类可以使用自定义Converter
。但我不确定这是最有意义的。
如果这是一个可靠的实现,我知道如何制作自定义Converter
。还有其他方法可以达到同样的目标吗?
答案 0 :(得分:1)
如果您安装了Json.Net,则可以使用JRaw
:
public ContentResult Something()
{
var literalJson = "{\"a\":1,\"b\":2}";
var resp = new
{
result = "success",
responseTime = DateTimeOffset.Now,
data = new Newtonsoft.Json.Linq.JRaw(literalJson)
};
return Content(JsonConvert.SerializeObject(resp), "application/json", Encoding.UTF8);
}
但请注意,您需要使用Json.Net的序列化程序才能工作。这就是为什么我将上面的代码更改为使用JsonConvert.SerializeObject
并返回ContentResult
而不是使用您最初显示的控制器Json
方法。 Json
方法在内部使用JavaScriptSerializer
,但不知道如何处理JRaw
。