0

我正在使用带有自定义 JavascriptConverter 的 JavascriptSerializer 来序列化两个对象并返回这些对象的数组。我正在使用 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 回答