【问题标题】:JSON Sort StringJSON 排序字符串
【发布时间】:2011-09-18 11:20:11
【问题描述】:

框架。 嗨,我正在使用 json 框架。

使用 JSONRepresentation 方法时如何获取已排序的字符串? 这是我的代码:

NSMutableDictionary *tUserIDParam = [NSMutableDictionary dictionary];

[tUserIDParam setObject:@"UserID" forKey:@"@key"];
[tUserIDParam setObject:@"string" forKey:@"@type"];
[tUserIDParam setObject:@"mark" forKey:@"#text"];

NSMutableDictionary *tPasswordParam = [NSMutableDictionary dictionary];
[tPasswordParam setObject:@"Password" forKey:@"@key"];
[tPasswordParam setObject:@"string" forKey:@"@type"];
[tPasswordParam setObject:@"123456" forKey:@"#text"];

NSArray *tParams = [NSArray arrayWithObjects:tUserIDParam,tPasswordParam, nil];
NSDictionary *tParam = [NSDictionary dictionaryWithObject:tParams forKey:@"param"];

NSMutableDictionary *tRequests = [NSMutableDictionary dictionary];
[tRequests setObject:[NSNull null] forKey:@"key"];
[tRequests setObject:[NSNull null] forKey:@"basic"];
[tRequests setObject:tParam forKey:@"conditions"];

NSDictionary *tRequest = [NSDictionary dictionaryWithObject:tRequests forKey:@"request"];

NSString *tJSONStrFromDict = [tRequest JSONRepresentation];

我想得到如下 JSON 字符串:

{"request":{"key":null,"basic":null,"conditions":{"param":[{"@key":"UserID","@type":"string", "#text":"mark"},{"@key":"Password","@type":"string","#text":"123456"}]}}}

但是我从上面的代码中得到了这个字符串:

{“请求”:{“基本”:null,“条件”: {"param":[{"#text":"mark","@key":"UserID","@type":"string"},{"#text":"123456","@key": "密码","@type":"string"}]},"key":null}}

我尝试使用SBJSONWriter sortKeys 属性,它不起作用...

有什么办法可以解决我的问题吗?

谢谢!

【问题讨论】:

    标签: iphone json sorting nsdictionary nsmutabledictionary


    【解决方案1】:

    NSMutableDictionary 实例不保留元素的顺序,既不按字母顺序也不按它们插入的顺序。这与 JSON 无关。

    此外,JSON 的对象数据模型也不保证顺序。如果你想要一个特定的顺序,你将不得不为有序的部分使用 JSON 数组。

    顺便说一句:SBJSONWriter sortKeys 的作用是输出按键名字母顺序排序的对象元素(或属性)。这就是你得到的。

    【讨论】:

    • 嗨 Codo ~ 谢谢你的回复。所以如果我想要特定的顺序,我应该改变我的 JSON 格式。使用NSMutableArray,并添加每个对象包含一个NSDictionary(一对键/值)。只有我能做到的方式吗?
    • 如果订单是相关的——而且我不知道整体情况来理解为什么会这样——那么是的,字典数组是实现这一点的最简单方法。
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2013-10-15
    • 2021-06-19
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多