结构化 objects 中存在 RestKit 键
RestKit key existence in stractured objects
大家好,
我想用 RestKit 映射从我的服务器中提取的复杂 JSON 结构。
这里是 JSON 结构示例:
"_cat0": [
{
"title": "category header",
"catId": 1
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
}
],
正如您在这里看到的,我们有一个 head object 代表每个部分的类别。 "_cat0"
实际上是一个前缀,包含了JSON中每个类别的完整数据。这个前缀是可延续的,包含了里面的所有内容,这意味着:帖子、类别数据和更多参数。
每个类别的第一个 object 包含标题和 category-id
{
"title": "category header",
"catId": 1
}
其他 object 包含该类别的帖子。
我的 RestKit 问题是通过 JSON.
中的值找到 Post object 和类别 object
我考虑在头部 object 中找到唯一键并将其存储为类别 object 然后 JSON 中的任何其他 object 存储为Post。但是我没有找到任何可以帮助我确定密钥存在或检查 object 的密钥是否可为空的函数。
这是我对这个问题的尝试:
if ([representation containsValueForKey:@"catId"]) {
// it's a category object
return categoryMapping;
} else {
// it's a post object
return postMapping;
}
但是这段代码在 运行 之后崩溃了。
对这个问题有什么想法吗?
如果您已将 JSON 数组分配给名为 _cat0
的对象,您可以执行以下操作:
for (NSDictionary *object in _cat0) {
if ([[object allKeys] contains:@"catId"]) {
// Process object as category metadata.
} else {
// Process object as a post.
}
}
如果您可以控制 JSON 响应,我 强烈 建议您使其结构更有意义。大致如下:
"_cat0": {
"title": "category header",
"catId": 1
"posts": [
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
}
]
},
大家好,
我想用 RestKit 映射从我的服务器中提取的复杂 JSON 结构。
这里是 JSON 结构示例:
"_cat0": [
{
"title": "category header",
"catId": 1
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
}
],
正如您在这里看到的,我们有一个 head object 代表每个部分的类别。 "_cat0"
实际上是一个前缀,包含了JSON中每个类别的完整数据。这个前缀是可延续的,包含了里面的所有内容,这意味着:帖子、类别数据和更多参数。
每个类别的第一个 object 包含标题和 category-id
{
"title": "category header",
"catId": 1
}
其他 object 包含该类别的帖子。
我的 RestKit 问题是通过 JSON.
中的值找到 Post object 和类别 object我考虑在头部 object 中找到唯一键并将其存储为类别 object 然后 JSON 中的任何其他 object 存储为Post。但是我没有找到任何可以帮助我确定密钥存在或检查 object 的密钥是否可为空的函数。
这是我对这个问题的尝试:
if ([representation containsValueForKey:@"catId"]) {
// it's a category object
return categoryMapping;
} else {
// it's a post object
return postMapping;
}
但是这段代码在 运行 之后崩溃了。
对这个问题有什么想法吗?
如果您已将 JSON 数组分配给名为 _cat0
的对象,您可以执行以下操作:
for (NSDictionary *object in _cat0) {
if ([[object allKeys] contains:@"catId"]) {
// Process object as category metadata.
} else {
// Process object as a post.
}
}
如果您可以控制 JSON 响应,我 强烈 建议您使其结构更有意义。大致如下:
"_cat0": {
"title": "category header",
"catId": 1
"posts": [
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
},
{
"id": 542232,
"title": "post post",
"time": "1421744040"
}
]
},