使用Json响应时有哪些关键问题?

时间:2010-02-12 08:33:58

标签: jquery asp.net-mvc json

我正在开发一个ASP.Net MVC项目,并且已经学习了一些JSON对象的小技巧,让我头疼了很长一段时间。例如,确保当我从jQuery调用$ .getJSON()时,我实际上需要确保我的JSON返回一个对象,而不仅仅是一个字符串值(好吧,呃呃!对吧?)。

在您的体验中使用JSON对象和响应时需要注意哪些关键事项?我对ASP.Net特别感兴趣,但可能是任何语言。

2 个答案:

答案 0 :(得分:3)

当我在WCF项目中使用.Net序列化为另一个服务生成JSon响应时,发生了一个令我讨厌的json bug。根据在线验证者的说法,这是完全合法的JSon,但收件人不会吞下它。

事实证明,内容的顺序很重要。根据JSon规范,顺序应该无关紧要,但显然另一端的消费者使用某种自定义解析器,当它没有在顶部找到某个字段时会被阻塞。序列化程序按字母顺序排列内容。

我绝望了一会儿,直到我发现我可以通过数据合同给序列化器一个明确的排序。问题解决了。

示例:

[DataMember(Order = 1)] //<-- thank Zod this exists!
public List<Foo> MyFoos { get; set; }

将数组'MyFoos'放在JSon响应的顶部。

注意:如果您这样做,请确保为每个数据成员提供排序,因为没有订单号的数据成员仍将浮动到顶部。

答案 1 :(得分:1)

绝不发送换行符或新换行符。也因为characer逃脱。 如果您使用.NET Json searilzer,那么它应该为您处理这些事情,但如果您自己这样做,则需要小心。

另外我注意到有时字符串是以前导空格发送/检索的,所以请务必调用.trim()!