1

我正在构建一个 iOS 应用程序,并且正在使用 RestKit v0.20 来映射 JSON 文件。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 文件的翻译。

我这可能会有所帮助,已获得此 JSON 文件的对应 XML:

<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>

如果有人可以帮助我,我将不胜感激。谢谢大家!

4

3 回答 3

2

这是 RestKit 的一个已知限制

引用框架作者本人的话:

这是一个已知的限制,也是 RestKit 依赖 Cocoa 的键值编码系统进行属性访问的结果。'@' 前缀是为命名键值集合运算符保留的。

您将需要更改 JSON 格式以有效地使用 RestKit

于 2013-04-07T16:52:40.240 回答
0

据我所知,RESTKit 使用 KVC,而 @ 由 KVC 使用,因此不能在 JSON 键名中使用它。尝试检查是否可以将 @ 前缀更改为其他内容,例如“m_”。

于 2013-04-07T16:44:06.323 回答
0

如果您不使用键路径进行映射,另一种选择可能是创建一个私有 RestKit 分支并使用 objectForKey: 和 relatives 而不是 valueForKey:。在 iOS 应用程序中,无论如何您都必须发布自己的 RestKit 副本。(为我的简单应用程序做了这个,到目前为止它有效)

于 2013-09-05T09:14:12.203 回答