0

我从具有以下格式的日期的 .NET 服务中获取 JSON 对象:/Date(1368825702750-0500)/

我需要能够将该格式反序列化为 NSDate,然后使用不同的格式显示 NSDate。

我正在使用 RestKit,但我似乎不知道如何告诉它使用正确的日期格式化程序。我知道有一个 RKDotNetDateFormatter,但我不知道如何正确使用它。我在其他网站上看到的大多数示例都使用了当前版本的 RestKit 中不再存在的方法和类。目前,我正在尝试将其设置如下:

RKDotNetDateFormatter *formatter = [RKDotNetDateFormatter dotNetDateFormatterWithTimeZone:[NSTimeZone systemTimeZone]];
[RKObjectMapping addDefaultDateFormatter:formatter];
[RKObjectMapping setPreferredDateFormatter:formatter];

此时我将我的 JSON 作为字符串,所以我正在执行以下操作来反序列化它:

MyDisplayEntity *infoMapped = [[MyDisplayEntity alloc] init];

RKMappingOperation* mapper = [[RKMappingOperation alloc] initWithSourceObject:object destinationObject:infoMapped mapping:[MyDisplayEntity responseMapping]];
mapper.dataSource = object;
[mapper performMapping:&error];

除了我的 NSDates 之外,一切似乎都得到了正确映射。

有没有人有一个如何正确反序列化这种格式的例子?

4

3 回答 3

2

您还可以配置直接在对象映射上处理日期和时间的方式(尽管您显示的全局设置也应该起作用)。

dateFormatters属性设置为您的RKDotNetDateFormatter *formatter(在数组中)。

打开跟踪日志记录以获取有关映射过程的更多详细信息也可能会有所帮助:

RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace);
于 2013-05-17T16:47:04.730 回答
0

在深入研究源代码后,我发现当我使用标准的服务检索方法时,它似乎并不关心您到目标实体的映射是否完全正确。然而,使用 RKMappingOperation 需要它们的大小写完全正确。

看起来这是用户错误:P

于 2013-05-17T17:13:20.840 回答
0

首先声明您的日期格式化程序对象

var dateFormater = RKDotNetDateFormatter()

将此日期格式化程序添加到您的 defaultValueTransformer() 和您的特定 RKEntityMapping/RKObjectMapping

RKValueTransformer.defaultValueTransformer().addValueTransformer(dateFormater)
btaMapping.valueTransformer = RKValueTransformer.defaultValueTransformer()
于 2015-07-24T21:04:05.873 回答