我正在使用带有自定义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
错误。
在我反序列化arrray时可能导致此错误的编码出错了什么?
感谢您的建议。
答案 0 :(得分:1)
这一行:
TheStringBuilder.Append("],[");
应阅读:
TheStringBuilder.Append(",");
有效JSON类似于[1,2]
- 您的代码生成[1],[2]
,这是无效的JSON。
另外,您是否考虑过尝试这样做而不是手动构建JSON数组?
TheSerializer.Serialize(new[] { FirstObject, SecondObject });