在iOS中使用RestKit解析JSON失败
我正在构建iOS应用程序,并且正在使用RestKit v0.20来映射JSON文件。 JSON文件结构是下一个:在iOS中使用RestKit解析JSON失败
{
"artists":{
"@total":"100",
"@page":"1",
"@itemsPerPage":"30",
"artist":[
{
"@sortName":"Ai Phoenix",
"@name":"Ai Phoenix",
"@mbid":"ffb0ac71-a438-4fce-91a5-58041aba0135",
"url":"http:\/\/www.setlist.fm\/setlists\/ai-phoenix-13d78159.html"
},
{
"@sortName":"Phoenix",
"@name":"Phoenix",
"@mbid":"02f4c1ff-65e0-4412-8e8b-6239b0faecb5",
"url":"http:\/\/www.setlist.fm\/setlists\/phoenix-53d653f9.html"
}
]
}
我不知道如何将这些属性具有前缀地图“@”(@sortname,@name,@mbid)。我尝试将其映射为普通字段(@“@ name”,@“@ mbid”,...),并且失败。另一方面,@“url”对于“url”字段运行良好。我已经搜索了,我得到的全部是这个符号是因为从一个名为Badgerfish的XML文件进行翻译。
我这能帮助,已经得到了通讯员XML这个JSON文件:
<artists total="100" page="1" itemsPerPage="30">
<artist sortName="Ai Phoenix" name="Ai Phoenix" mbid="ffb0ac71-a438-4fce-91a5- 58041aba0135">
<url>
http://www.setlist.fm/setlists/ai-phoenix-13d78159.html
</url>
</artist>
如果有人能帮助我,我将不胜感激。谢谢大家!
这是RestKit的known limitation。
引用框架的作者自己:
这是一个已知的限制,RestKit对 Cocoa的键 - 值属性访问编码系统依赖的结果。 '@'前缀是 ,用于计算键值收集操作符。
你将需要更改JSON格式有效地与RestKit工作
据我所知RESTKit使用KVC,而@被KVC使用,所以不能在JSON键名中使用它。尝试检查是否可以使用其他内容更改@前缀,例如“m_”。
谢谢安德烈!正如我对Gabriele所说的,我将使用RKXMLReaderSerialization尝试XML文件而不是JSON。 – 2013-04-07 19:49:37
我是我的意见使用XML是一种退后一步,我喜欢JSON的同步有效载荷。如果你觉得舒适,你可以做你自己的“RestKit”,不会有问题。或者尝试预先详细说明删除@与另一个字符的字符串 – Andrea 2013-04-07 20:45:20
我将尝试删除@字符并映射文件。谢谢安德烈! – 2013-04-08 00:07:22
如果你不使用映射另一种方法是创建一个私有RestKit分支和使用objectForKey关键路径:和亲属而不是valueForKey :.在iOS应用程序中,您必须随身携带您自己的RestKit副本。 (这是为我的简单的应用程序,它的工作到目前为止)
谢谢!我终于决定使用Apple的NSJSONSerialization,它的工作原理非常完美!我将在未来给RestKit一个机会。 – 2013-10-28 20:57:28
谢谢Gabriele!我想我尝试使用XML替代。也许我错了,但我读过RestKit只支持json,我不得不添加一个库来解析它。我在SO RKXMLReaderSerialization中找到了。 – 2013-04-07 19:48:30