我有一个基本的 Web 服务,它以 JSON 形式返回以下对象:
public class GetCustomerResponse
{
public Guid InteractionId { get; set; }
public string CustomerInfo { get; set; }
}
CustomerInfo 成员也是 JSON,因此返回给调用者的返回包含转义的 JSON,老实说,这很公平,也是意料之中的
但是,我希望将 CustomerInfo JSON“嵌入”在响应中而不进行任何转义。有人知道这是否可行,如果可以,怎么办?
必须将 CustomerInfo 作为字符串处理的原因是因为这是由不基于对象的子系统生成的,所以我得到的只是一个原始 JSON 字符串。
我意识到这可以通过在服务中创建一个 CustomerInfo 类来解决,但是我宁愿避免这种情况,因为这将是一个包含许多成员的大型类,更重要的是,如果进行了任何更改,它将需要更新服务。
编辑:我已经接受了 Sergey Kudriavtsev 的回答,因为这可行,但最后我选择了不同的解决方案。
我已将 json.net 库添加到解决方案中并编辑了我的 GetCustomer 类,如下所示:
public Newtonsoft.Json.Linq.JObject CustomerInfo { get; set; }
然后在代码中我改变了服务接口:
GetCustomerResponse GetCustomer(int customerId)
到:
void GetCustomer(int customerId)
然后在接口的实现中我正在执行以下操作
public void GetCustomer(int customerId)
{
var customerJson = ... code to get json string ...
var response = new GetCustomerResponse()
{
InteractionId = Guid.NewGuid(),
CustomerInfo = JObject.Parse(customerJson)
};
string json = JsonConvert.SerializeObject(response, Formatting.Indented);
HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
HttpContext.Current.Response.Write(json);
}