我有一个问题,即通过ASP.NET从sql数据库获取数据,然后将数据传递给Objective-C.目前我只是使用sql select语句通过ASP.NET从数据库中获取数据,ASP.NET返回如下数据:
<ArrayOfKeyValueOfstringPunchListCellModel84zsBx89 xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <KeyValueOfstringPunchListCellModel84zsBx89> <Key>ORC0023</Key> <Value xmlns:d3p1="http://schemas.datacontract.org/2004/07/LHS.Models"> </Value> </KeyValueOfstringPunchListCellModel84zsBx89> </ArrayOfKeyValueOfstringPunchListCellModel84zsBx89>
然后在Objective-C中我将数据放入NSDictionary中,如下所示:
NSDictionary *punchList = [[NSDictionary alloc]initWithDictionary:[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&myError]];
一切都在这里按预期工作.
我现在正在做的是创建一个返回XML的存储过程,并让ASP.NET返回XML(这里的所有内容都已完成并按预期工作)XML如下所示:
<KeyValueOfstringPunchListCellModel84zsBx89> <Key>ORC0023</Key> <Value> </Value> </KeyValueOfstringPunchListCellModel84zsBx89> </ArrayOfKeyValueOfstringPunchListCellModel84zsBx89>
现在对于Objective-C粉丝,您知道除非您使用第三方项目/库,否则您无法在NSDictionary中使用XML.
现在我的问题是,我是否重做了我的存储过程以返回JSON,还是有另一种方法可以解决这个问题?
我的最终目标是尽可能快地完成流程,SQL查询非常庞大,并返回很多行.
解决方法
你应该
1)重做您的存储过程并返回原始数据.
2)让asp.net处理数据格式化,因为有些客户端可能需要JSON,而其他客户端则更喜欢xml.因此,如果您要使用JSON路由,则可以从MVC控制器返回JSON结果,即
public JsonResult GetData() { var temp = new { name = "hello world" }; return this.Json(temp) }
或使用web api创建Web服务.
因为你有一个很大的结果集,你应该尝试使用比xml更简洁的JSON,因此会占用更少的资源