【发布时间】:2017-05-30 09:15:48
【问题描述】:
我有以下 DTO:
public class MyDTO
{
public int Id { get; set; }
public String Info { get; set; }
}
Info 元素包含一些可以是多种不同类型的序列化 JSON 对象。
在我的服务函数中,我使用return x.ConvertTo<MyDTO>()返回这个 DTO
我的问题是,由于 ServiceStack 不知道 Info 包含 JSON,因此 Info 的特殊字符(引号)被转义了。
所以我明白了
{"Id":15,"Info":"[\"Test1\",\"Test2\",\"Test3\"]"}
来自服务,但我想得到的其实是
{"Id":15,"Info":["Test1","Test2","Test3"]}
有什么方法可以告诉 ServiceStack Info 包含 JSON 数据,从而防止它转义字符串,而是将 JSON 值直接插入响应中?
P.S.:我的问题不是 that question 的重复,它涉及将服务的默认 DTO 编码强制为 JSON,而我的问题涉及 JSON 编码对于某些类型是如何发生的。
【问题讨论】:
-
@PranavPatel 我的问题不是那个问题的重复。它涉及将服务的默认 DTO 编码强制为 JSON,而我的问题是处理某些类型的 JSON 编码是如何发生的。
-
@mat 预期的不是有效的 JSON。这不是有效的 JSON
{"Id":15,"Info":"{["Test1","Test2","Test3"]}"}。你实际得到的是正确的,因为 Info 是一个字符串,因此它被转义了。 -
@Nkosi 那行不通。信息基本上可以从任何类型编码。值的解码和解释仅在前端完成。
标签: c# json servicestack