RestKit JSON 嵌套方括号

Posted

技术标签:

【中文标题】RestKit JSON 嵌套方括号【英文标题】:RestKit JSON nested square Brackets 【发布时间】:2012-01-24 01:57:51 【问题描述】:

对于我的 JSON,我想获得以下格式:

"fromTrigger":
    "id":1,
    "fieldId":2,
    "type":"FROM"

但是通过我的映射,我得到以下信息:

"fromTrigger":[
    
        "id":1,
        "fieldId":2,
        "type":"FROM"
    
]

如您所见,我在第二个括号中有多余的方括号“[ ]”。

我有以下映射:

RKObjectMapping* fromTriggerMapping = [RKObjectMapping mappingForClass:[ActianTriggers  class]];
[fromTriggerMapping mapKeyPath:@"id" toAttribute:@"triggerId"];
[fromTriggerMapping mapKeyPath:@"fieldId" toAttribute:@"fieldId"];
[fromTriggerMapping mapKeyPath:@"type" toAttribute:@"type"];
[fromTriggerMapping mapKeyPath:@"filters" toRelationship:@"filters"     withMapping:triggerMapping serialize:YES];
[[RKObjectManager sharedManager].mappingProvider setMapping:fromTriggerMapping   forKeyPath:@"fromTrigger"]; 

更新: 感谢您的快速回复,我的问题是如何让“FromTrigger”块的 JSON 只有大括号而不是方括号。从上面的两个 JSON 中,我想实现第一个的格式。我需要这个,因为否则 Web 服务会引发错误。

ActianTriggers 类(下面是头文件,.m 只合成这些变量):

@interface ActianTriggers : NSObject
@property (nonatomic, retain) NSString *type;
@property (nonatomic, retain) NSNumber *triggerID;
@property (nonatomic, retain) NSNumber *fieldId;
@property (nonatomic, strong) NSArray  *filters;
@end

【问题讨论】:

ActianTriggers是什么东西? 能否提供ActianTriggers的定义,以及triggerMapping?查看与 JSON 生成关联的 sn-p 也会很有帮助。我假设您正在尝试 PUT/POST,但确切的代码 sn-p 将有助于确定序列化操作发生了什么。 【参考方案1】:

在第一个实例中,fromTrigger 是一个字典,在第二个实例中,fromTrigger 是一个数组或一个项目,而该项目是一个字典。

请注意,在 JSON 术语中,dictionaryobject

ActianTriggers 是什么?映射内省对象以确定要进行的映射类型。

来自RKObjectMappingdocumentation(粗体字是我的): 1. keyPath 属性。定义在 keyPath 找到的值应该被转换并分配给属性指定的属性。要执行的转换是通过在运行时检查目标属性的类型来确定的。

见Introducing JSON。

【讨论】:

以上是关于RestKit JSON 嵌套方括号的主要内容,如果未能解决你的问题,请参考以下文章

将包含许多嵌套对象的JSON文件保存到列表中

restkit 映射嵌套数组为空(带有 json 响应的嵌套 restkit 请求)

带有 valueForKeyPath 的嵌套 NSDictionary 返回括号而不是 NSString

Java获取Json中的数据

RestKit 0.20:映射复杂的动态嵌套 JSON

RestKit RKObjectMapping 嵌套 json