W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
將請求的處理結(jié)果作為 JSON 響應給客戶端。
在 Hasor 中響應一個 JSON 字符串給瀏覽器非常簡單,首先我們的請求處理器只需要將要作為 JSON 進行響應的數(shù)據(jù)在請求處理方法上以返回值形式 return 即可以,剩下的就交給渲染器。下面是請求處理的例子:
@MappingTo("/helloAcrion.json")
public class HelloAcrion extends WebController {
public Object execute(RenderInvoker invoker) {
return ...
}
}
一般情況下請求一個 json 資源我們習慣用 .json
作為資源的后綴。如果您使用的是 restful 風格的路徑,您可能還需要通過 @Produces 注解來指定響應的格式。如下:
@MappingTo("/user/info/${userID}")
public class HelloAcrion extends WebController {
@Produces("json")
public Object execute(RenderInvoker invoker) {
return ...
}
}
配置 JSON 渲染器,Hasor 內(nèi)置的 JSON 渲染器。會自動感知當前項目中可以使用的 JSON 序列化庫,默認情況下,JsonRender會自動按照下面順序嘗試尋找可以使用的 JSON 庫:fastjson、Gson、Json-lib。如果您沒有引入任何一個 json 庫那么會有一個 ClassNotFoundException 異常。
Hasor 的 JSON 渲染器還允許您跳過 Hasor 內(nèi)置 JSON 渲染庫的查找規(guī)則,直接使用您指定的渲染方式。您可以通過這種方式實現(xiàn)自定義 JSON 渲染,使用方式如下:
// JSON 渲染引擎
public class UserJsonRenderEngine implements JsonRenderEngine {
@Override
public void writerJson(Object renderData, Writer writerTo) throws Throwable {
//將 renderData 數(shù)據(jù)序列化到 writerTo 中
}
}
// 注冊 JSON 渲染引擎
public class StartModule extends WebModule {
@Override
public void loadModule(WebApiBinder apiBinder) throws Throwable {
// - 設(shè)置 JSON 渲染器
apiBinder.suffix("json").bind(JsonRender.class); //設(shè)置 JSON 渲染器
// - 使用自定義 JSON 序列化引擎(可選)
apiBinder.bind(JsonRenderEngine.class).to(UserJsonRenderEngine.class);
}
}
當上面這一切都做好之后,您只需要訪問一下您的請求處理器即可得到結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: