使用erlang构建Json respose。首先,我按术语构造数据,然后使用jsx将其转换为JSON:
Response = jsx:term_to_json(MealsListResponse),
根据我使用的验证器,响应实际上是有效的JSON:
问题在于解析前端的响应。有没有办法从Erlang侧剥去反斜杠,这样就不会出现在有效负载响应中?
答案 0 :(得分:1)
反斜杠实际上不是字符串的一部分。它们只是在字符串作为术语打印时使用 - 也就是说,就像在Erlang源文件中编写它一样。这与C和类似语言中的字符串中的字符转义的工作方式相同:在双引号内,应该是字符串一部分的双引号需要使用反斜杠进行转义,但反斜杠实际上不会将其转换为字符串。
要打印不带字符转义的字符串,可以使用~s
的{{1}}指令:
io:format
如果您通过TCP套接字发送响应,那么您需要做的就是使用适当的Unicode转换将字符串转换为二进制文件。大多数时候你会想要UTF-8,你可以得到它:
io:format("~s~n", [Response]).