为一系列序列化对象构建json

时间:2012-10-09 16:31:58

标签: c# json

我正在使用带有自定义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时可能导致此错误的编码出错了什么?

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

这一行:

TheStringBuilder.Append("],[");

应阅读:

TheStringBuilder.Append(",");

有效JSON类似于[1,2] - 您的代码生成[1],[2],这是无效的JSON。

另外,您是否考虑过尝试这样做而不是手动构建JSON数组?

TheSerializer.Serialize(new[] { FirstObject, SecondObject });