2

Mochijson を使用して JSON リストをデコードすると、リストの値によっては誤った結果が生成されます。

例えば:

Eshell V5.9.1  (abort with ^G)
1> c(mochijson).
{ok,mochijson}
2> mochijson:decode("[]").
{array,[]}
3> mochijson:decode("[100]").
{array,"d"}
4> mochijson:decode("[100,100]").
{array,"dd"}
5> mochijson:decode("[20,20]").       
{array,[20,20]}
6> mochijson:decode("[30,30]").
{array,[30,30]}
7> mochijson:decode("[35,35]").
{array,"##"}
8> mochijson:decode("[\"Hello\",35]").
{array,["Hello",35]}

私の問題は、3、4、および 7 行目で、リスト項目を整数としてデコードせずに同等の ASCII に変換していることです。

別の JSON ライブラリへのポインタまたは回避策/修正を歓迎します。:-)

4

2 に答える 2

1

@Khashayar のコメントを明確にするために、Erlang の文字列整数のリストです。シェルは基本的に、整数の値に基づいて、文字列として表示するか整数のリストとして表示するかを推測する必要があります。文字列と言うタグはありません。これは、シェルで非常に簡単に証明できます。

1> [].
[]
2> [100].
"d"

mochijson2 では、バイナリ型を使用して文字列を表現することで、これをもう少し簡単にしています。mochijson の代わりにこのライブラリを使用することを強くお勧めします。このライブラリの方がはるかに人気があります。

1> mochijson2:decode("[]").
[]
2> mochijson2:decode("[100]").
"d"
3> mochijson2:decode("[\"hello\"]").
[<<"hello">>]
于 2013-08-01T23:34:54.933 に答える