首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ServiceStack重新调整JObject\dynamic似乎返回了

用ServiceStack重新调整JObject\dynamic似乎返回了
EN

Stack Overflow用户
提问于 2022-07-05 13:59:34
回答 1查看 41关注 0票数 0

我正在尝试从SQL中获取一个JSON字符串(在SQL查询中很好地工作,在那里它是结构化的),并通过ServiceStack返回它。反序列化它没有错误,我可以在调试中看到对象,但是服务的结果只是一堆空嵌套数组?

代码语言:javascript
复制
//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拉回来。

EN

回答 1

Stack Overflow用户

发布于 2022-07-05 14:37:09

有关在服务返回类型中返回自定义响应的不同方法,请参见自定义HTTP响应和ServiceStack。

如果您只想按原样从Server返回JSON,则可以使用json内容类型返回JSON字符串,例如:

代码语言:javascript
复制
[AddHeader(ContentType = MimeTypes.Json)]
public string Get(RawJson request)
{
    //...
    return json;
}

如果需要添加附加的Headers,则使用HttpResult

代码语言:javascript
复制
public string Get(RawJson request)
{
    return new HttpResult(json) {
        ContentType = MimeTypes.Json,
        Headers = {
            [HttpHeaders.XXX] = "..."
        }
    };

}

无论哪种方式,都应该对请求DTO进行注释,使其返回一个字符串,以便客户端知道返回字符串响应的方式如下:

代码语言:javascript
复制
public class RawJson : IReturn<string> {}

如果希望返回JSON对象作为较大有效负载的一部分,可以使用JS Utils JSON.parse()解析非类型化泛型集合中的任意JSON,例如:

代码语言:javascript
复制
public string Get(CustomJson request)
{
    return new CustomJsonResponse {
        Result = JSON.parse(json)
    };
}

如果Resultobject,使用object确实意味着添加ServiceStack引用类型的客户端将不支持它,客户机只需将其解析为任意JSON,例如JavaScript中的JSON.parse(json)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72870724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档