2010-02-12 31 views
5

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

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

回答

3

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

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

我绝望了一小会儿,直到我发现我可以通过数据合约为序列化程序提供明确的排序。问题解决了。

实施例:

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

把 '的阵列MyFoos' 在JSON响应的顶部。

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

1

切勿发送换行符或新行。也因为characer逃脱。 如果你使用.NET Json的搜索器,那么它应该为你处理这些事情,但如果你自己做,你需要小心。

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