0

カスタム JavascriptConverter で JavascriptSerializer を使用して、2 つのオブジェクトをシリアル化し、これらのオブジェクトの配列を返します。次のように、Stringbuilder を使用して配列を作成しています。

JavaScriptSerializer TheSerializer = new JavaScriptSerializer();
TheSerializer.RegisterConverters(new JavaScriptConverter[] { new MyConverter()});

TheStringBuilder.Append("[");
TheStringBuilder.Append(TheSerializer.Serialize(FirstObject));
TheStringBuilder.Append("],[");
TheStringBuilder.Append(TheSerializer.Serialize(SecondObject));
TheStringBuilder.Append("]");

TheJsonToClient = TheStringBuilder.ToString();

シリアライゼーションとカスタム コンバーターは正常に動作します。これは、コードの他の部分でそれらを使用し、クライアントの JSON.parse でこれらのオブジェクトに対してうまく機能するためです。

問題は、戻り文字列を読み取ってそれを呼び出すとJSON.parse、クライアントで逆シリアル化が失敗しUnexpected Token、解析中にエラーが発生することです。

配列を逆シリアル化しているときにこのエラーを引き起こす可能性のあるエンコーディングの何が間違っていますか?

ご提案いただきありがとうございます。

4

1 に答える 1

1

この行:

TheStringBuilder.Append("],[");

読む必要があります:

TheStringBuilder.Append(",");

有効なJSONは次のようになり[1,2]ます-コードが生成していますが[1],[2]、これは無効なJSONです。

また、JSON配列を手動で作成する代わりに、これを試すことを検討しましたか?

TheSerializer.Serialize(new[] { FirstObject, SecondObject });
于 2012-10-09T16:34:43.500 に答える