我正在尝试从SQL中获取一个JSON字符串(在SQL查询中很好地工作,在那里它是结构化的),并通过ServiceStack返回它。反序列化它没有错误,我可以在调试中看到对象,但是服务的结果只是一堆空嵌套数组?
//Tried both of these, same result
this.Json = JObject.Parse(json);
/// or
this.Json = JsonConvert.DeserializeObject<dynamic>(json);
///....
public dynamic Json { get; set; }
/// or
public JObject Json { get; set; }不能做POCO,因为我不知道它的结构,只需要把json blob拉回来。

发布于 2022-07-05 14:37:09
有关在服务返回类型中返回自定义响应的不同方法,请参见自定义HTTP响应和ServiceStack。
如果您只想按原样从Server返回JSON,则可以使用json内容类型返回JSON字符串,例如:
[AddHeader(ContentType = MimeTypes.Json)]
public string Get(RawJson request)
{
//...
return json;
}如果需要添加附加的Headers,则使用HttpResult:
public string Get(RawJson request)
{
return new HttpResult(json) {
ContentType = MimeTypes.Json,
Headers = {
[HttpHeaders.XXX] = "..."
}
};
}无论哪种方式,都应该对请求DTO进行注释,使其返回一个字符串,以便客户端知道返回字符串响应的方式如下:
public class RawJson : IReturn<string> {}如果希望返回JSON对象作为较大有效负载的一部分,可以使用JS Utils JSON.parse()解析非类型化泛型集合中的任意JSON,例如:
public string Get(CustomJson request)
{
return new CustomJsonResponse {
Result = JSON.parse(json)
};
}如果Result是object,使用object确实意味着添加ServiceStack引用类型的客户端将不支持它,客户机只需将其解析为任意JSON,例如JavaScript中的JSON.parse(json)。
https://stackoverflow.com/questions/72870724
复制相似问题