【问题标题】:Including properties with nil values when serializing with JSONModel使用 JSONModel 序列化时包括具有 nil 值的属性
【发布时间】:2015-02-12 06:10:24
【问题描述】:

我正在使用 JSONModel 在 Objective-C 中序列化一个自定义类。我试图序列化的类User 看起来像:

<User> 
   [UserCount]: 658
   [CreationDate]: 2014-04-17T00:38:34.176Z
   [Credits]: 0
   [Email]: Email Address
   [Locale]: <nil>
   [DeveloperDetails]: <nil>
   [Name]: ashishagarwal
   [UserName]: ashishagarwal
   [_id]: xxxxxxxx--userid--------------
   [FirstName]: First Name
   [AuthenticationType]: <nil>
   [_deleted]: 0
   [LastActivityDate]: 2015-02-10T23:26:41.816Z
   [Type]: 0
   [IsAuthenticated]: 0
   [LastName]: Last Name
   [LastLoginDate]: 2015-02-12T03:39:50.626Z
</User>

有几个 nil 值,但这是意料之中的。

我正在尝试使用以下行进行序列化:

id json = [self.currentUser toJSONString];

打印出来的 JSON 是:

{
    "UserCount": 658,
    "CreationDate": "2014-04-17T00:38:34.176Z",
    "Credits": 0,
    "Email": "Email Address",
    "Name": "ashishagarwal",
    "UserName": "ashishagarwal",
    "_id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "FirstName": "First Name",
    "_deleted": false,
    "LastActivityDate": "2015-02-10T23:26:41.816Z",
    "Type": 0,
    "IsAuthenticated": false,
    "LastLoginDate": "2015-02-12T03:39:50.626Z",
    "LastName": "Last Name"
}

nil 的值已消失。有没有办法在序列化时将它们标记为“null”?

【问题讨论】:

  • 您是否将这些标记为&lt;Optional&gt;?!?否则,它们将被包括在内。向我们展示您是如何定义 User 类的属性的。

标签: ios objective-c json serialization jsonmodel


【解决方案1】:

As noted by Rob,属性是否标记为Optional很重要。

如果一个属性被标记为Optional,并且值为nil,则key不会在结果JSON中输出。如果您删除Optional 标志,它将输出为null

我们正在考虑进行更改,以便当 Optional 属性显式设置为 NSNull 时,该值将输出为 nullSee this issue - 解决后,您将能够执行以下操作:

self.currentUser.DeveloperDetails = [NSNull null];
NSString *json = [self.currentUser toJSONString];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 2014-07-31
    • 2022-11-11
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多