首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChicagoBoss json输出

ChicagoBoss json输出
EN

Stack Overflow用户
提问于 2014-07-17 23:45:48
回答 1查看 365关注 0票数 1

我有一些从目录中获取文件列表的代码,我希望将其作为json发送回客户端。

代码语言:javascript
复制
getDir('GET', [])-> 
    {ok,Sheets} = files(FileDir),
    Sheets2 = sheetJson(Sheets, ""),
    {json, [{sheets, Sheets2}]}.

sheetJson([H|T], [])->
    {File, Name, Size} = H,
    Str = [{file, File},{name, Name}],
    sheetJson(T, Str);

sheetJson([H|T], Str)->
    {File, Name, Size} = H,
    Acc = Str++[{file, File},{name, Name}],
    sheetJson(T, Acc);

sheetJson(_, Str)->Str.

此代码将返回

代码语言:javascript
复制
{"sheets":{"file":"0-Jason .csv","name":"Jason ","file":"1-State.csv","name":"State","file":"2-country.csv","name":"country"}}

但想要的更像是

代码语言:javascript
复制
 {"sheets":{"file":"0-Jason .csv","name":"Jason "},{"file":"1-State.csv","name":"State"},{"file":"2-country.csv","name":"country"}}

如果我尝试将代码更改为任何内容,那么我就会得到以下错误消息

代码语言:javascript
复制
Unhandled Error: error:function_clause. Stacktrace: [{boss_json,json_data1,[[{sheet,{file,"0-Sheet1.csv"},{name,"Sheet1"}}],[],[]],[{file,"src/boss/boss_json.erl"},{line,31}]},{boss_json,json_data1,3,[{file,"src/boss/boss_json.erl"},{line,42}]},{boss_json,encode,2,[{file,"src/boss/boss_json.erl"},{line,16}]},{boss_web_controller_render,process_action_result,4,[{file,"src/boss/boss_web_controller_render.erl"},{line,171}]},{boss_web_controller,execute_action_inner,9,[{file,"src/boss/boss_web_controller.erl"},{line,337}]},{boss_web_controller_handle_request,process_dynamic_request,4,[{file,"src/boss/boss_web_controller_handle_request.erl"},{line,242}]},{boss_web_controller_handle_request,process_request,4,[{file,"src/boss/boss_web_controller_handle_request.erl"},{line,228}]},{boss_web_controller_handle_request,set_timer,7,[{file,"src/boss/boss_web_controller_handle_request.erl"},{line,148}]}]

编辑:我想出了的解决方案

我只是编写了一个json字符串,使用了{output,}而不是{ Json,_},好处是我可以在javascript错误和补丁中看到Json字符串,在那里,与erlang一样,我只得到一条没有告诉我任何信息的大量消息。

EN

回答 1

Stack Overflow用户

发布于 2014-07-18 05:21:49

您试图生成的以下JSON实际上是无效的:

代码语言:javascript
复制
{"sheets":{"file":"0-Jason .csv","name":"Jason "},{"file":"1-State.csv","name":"State"},{"file":"2-country.csv","name":"country"}}

相反,您可能希望按以下方式进行编码:

代码语言:javascript
复制
{"sheets":[{"file":"0-Jason .csv","name":"Jason "},{"file":"1-State.csv","name":"State"},{"file":"2-country.csv","name":"country"}]}

这仅仅是通过创建一个表单列表来实现的。基本上,函数getDir/2应该返回以下值:

代码语言:javascript
复制
{json, [{sheets, [
    [{file, "0-Jason .csv"}, {"name", "Jason "}],
    [{file, "1-State.csv"}, {"name", "State"}],
    [{file, "1-country.csv"}, {"name", "country"}]
]}]}.

您可能只需要更改两行:

代码语言:javascript
复制
sheetJson([H|T], [])->
    {File, Name, Size} = H,
    Str = [[{file, File},{name, Name}]],  %%% <-- here
    sheetJson(T, Str);

sheetJson([H|T], Str)->
    {File, Name, Size} = H,
    Acc = Str++[[{file, File},{name, Name}]],   %%% <-- here
    sheetJson(T, Acc);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24815317

复制
相关文章

相似问题

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