- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 mochijson2 对一些数据进行编码。但我发现它在字符串作为列表时表现得很奇怪。
示例:
mochijson2:encode("foo").
[91,"102",44,"111",44,"111",93]
其中“102”、“111”、“111”是编码为字符串的 $f、$o、$o44 是逗号,91 和 93 是方括号。
当然,如果我在某个地方输出它,我会得到字符串“[102,111,111]”,这显然不是我想要的。
如果我尝试
mochijson2:encode(<<"foo">>).
[34,<<"foo">>,34]
所以我再次得到一个包含两个双引号和二进制部分的列表,其中可以使用 list_to_binary/1 将其转换为二进制
问题是——为什么如此不一致。我知道区分应该编码为 json 数组的 erlang 列表和应该编码为 json 字符串的 erlang 字符串存在问题,但至少当我传递二进制文件时它可以输出二进制文件吗?
第二个问题:看起来 mochijson 输出的一切都很好(因为它使用特殊的元组来指定数组 {array, ...})
mochijson:encode(<<"foo">>).
"\"foo\""
mochijson2 和 mochijson 有什么区别?表现?统一码处理?还有什么吗?
谢谢
最佳答案
我的猜测是,mochijson 中的决定是将二进制视为字符串,并将整数列表视为整数列表。 (Un?)幸运的是,Erlang 中的字符串实际上是一个整数列表。
结果,你的“foo”,或者换句话说,你的[102,111,111]被翻译成代表“[102,111,111]”的文本。在第二种情况下,您的 <<"foo">> 字符串变为“foo”
关于第二个问题,mochijson似乎总是返回一个字符串,而mochijson2返回一个iodata类型。 Iodata 基本上是字符串、二进制文件和 iodata(实际上是 iolist)的递归列表。如果您只想“通过线路”发送结果,则将它们嵌套在列表中比将它们转换为平面字符串更有效。
关于json - mochijson2 或 mochijson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1562235/
我正在使用 mochijson2 对一些数据进行编码。但我发现它在字符串作为列表时表现得很奇怪。 示例: mochijson2:encode("foo"). [91,"102",44,"111",44
我是一名优秀的程序员,十分优秀!