前提・実現したいこと
初歩的な質問かつ知識不足なのはご了承ください。
適当なテキストファイルをjson形式で新たに作成したい。
発生している問題・エラーメッセージ
sample.txt(図1)というファイルをjson形式に変える過程でsample.json(図2)のようにASCIIコードになってしまう。
[true, #{<<"1">> => 2, <<"array">> => [[[[1]]], #{<<"ab">> => <<"cd">>}, [], #{}, false]}, null]
図1 sample.txt
[ 91, 116, 114, 117, 101, 44, 32, 35, 123, 60, 60, 34, 49, 34, 62, 62, 32, 61, 62, 32, 50, 44, 32, 60, 60, 34, 97, 114, 114, 97, 121, 34, 62, 62, 32, 61, 62, 32, 91, 91, 91, 91, 49, 93, 93, 93, 44, 32, 35, 123, 60, 60, 34, 97, 98, 34, 62, 62, 32, 61, 62, 32, 60, 60, 34, 99, 100, 34, 62, 62, 125, 44, 32, 91, 93, 44, 32, 35, 123, 125, 44, 32, 102, 97, 108, 115, 101, 93, 125, 44, 32, 110, 117, 108, 108, 93 ]
図2 sample.json
該当のソースコード
Erlang
1-module(txt_to_json). 2-author("MaSaKai"). 3-import(jsone, [encode/2]). 4 5%% API 6-export([main/0]). 7%% -compile([all_export]). 8 9main() -> 10 Sentense = readlines("sample.txt"), 11 Data = exchange_json(Sentense), 12 writelines("sample.json", Data). 13 14readlines(FileName) -> 15 {ok, Device} = file:open(FileName, [read]), 16 try get_all_lines(Device) 17 after file:close(Device) 18 end. 19 20get_all_lines(Device) -> 21 case io:get_line(Device, "") of 22 eof -> []; 23 Line -> Line ++ get_all_lines(Device) 24 end. 25 26writelines(FileName, Data) -> 27 case file:write_file(FileName, Data) of 28 ok -> io:format("~s/n", [Data]); 29 {error, Reason} -> Reason 30 end. 31 32exchange_json(Data) -> 33 encode(Data, [{indent, 2}, {space, 1}]).
試したこと
jsone's linkを参考にしつつ、エンコードするデータの形を工夫してみたが求めている結果が得られなかった。
補足情報(FW/ツールのバージョンなど)
Version : V10.6
Editor : Intellij
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/10 06:14