【问题标题】:JSON values getting jumbled up after parsing iOS解析 iOS 后 JSON 值变得混乱
【发布时间】:2014-05-29 10:40:53
【问题描述】:

我收到一个 JSON 响应,并在 iOS Xcode 5.1 中使用 NSJSONSerialization 对其进行序列化。我得到的 o/p 是:

(lldb) po jsons

{
    Res1 = ({
        ADDRESS = " 131 SleakField Road ";
        ALP = " ";
        "BIRTH_DATE" = "05/09/2002";
    });
    Res2 = ({
        Performance = "";
        Score = "";
    }, {
        Performance = Proficient;
        Score = 221;
    }, {
        Performance = "";
        Score = "";
    }, {
        Performance = Proficient;
        Score = 237;
    });
    Res3 = ();
    Res4 = ();
}

jsons 是NSDictionary

但是当我使用下面的代码从上面的键值对中分离键时:

jsonKeys = [[NSArray alloc] init];
jsonKeys = [jsons allKeys];

我得到的 o/p 是:

(lldb) po jsonKeys

<__NSArrayI 0xb62dff0>(
    Res2,
    Res5,
    Res3,
    Res1,
    Res6,
    Res4
)

一切都乱了套。我想要从服务器获取它的方式。
我怎样才能实现它?

【问题讨论】:

  • 根据定义,JSON“对象”(NSDictionary)中的条目是无序的。你想要的太多了。
  • 您不需要jsonKeys = [[NSArray alloc] init]。该行正在创建一个对象,该对象将被丢弃而不会被使用。
  • Removing jsonKeys = [[NSArray alloc] init] dint 会给输出带来任何改变。
  • @LeoJoseph:当然不是。它创建了一个立即被丢弃的数组。是否创建一个立即被丢弃的数组都没有区别,除非通知其他程序员预期的代码质量。

标签: ios json nsdictionary nsjsonserialization


【解决方案1】:

NSDictionary 无法做到这一点。条目没有排序。

为了保持顺序,你应该使用条目列表,改变 json 的结构

【讨论】:

  • 我按我想要的顺序在本地 NSDictionary 中获取我的值对。现在它与 JSON 或序列化无关。我只想从中得到钥匙。 [array allkeys] 函数应该做的事情。但不知何故,它不是。
【解决方案2】:

我从堆栈溢出中提出的其他问题中得到了答案。

jsonsDictsKeys = [[jsons allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];
jsonsDictsValues = [jsons objectsForKeys: jsonsDictsKeys notFoundMarker: [NSNull null]];

其中 jsonsDictsKeys 和 jsonsDictsValues 是 NSArray。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 2015-01-10
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多