【发布时间】:2016-07-21 13:23:12
【问题描述】:
我有一个 JSON 文件,其中包含国家列表及其国家代码的键/值对。我正在使用 Objective-C 阅读它,并希望在 UIPicker 中呈现它。
问题是,当我将 JSON 数据存储到 NSDictionary 中时,原始顺序会丢失,UIPicker 元素的顺序非常随意(我知道,字典没有特定顺序)。
保持原始订单最简单的方法是什么?我是否必须创建两个文件,一个带有国家代码,一个带有国家名称,并以相同的顺序读入一个数组? - 我真的很想避免这种情况......
[编辑]
根据请求,JSON-Data 的摘录(存储在本地文件中)
{"af":"Afghanistan",
"al":"Albania",
"dz":"Algeria",
"as":"American Samoa",
"ad":"Andorra",
"ao":"Angola",
"ai":"Anguilla",
"aq":"Antarctica",
"ag":"Antigua and Barbuda",
"ar":"Argentina",
"am":"Armenia",
"aw":"Aruba",
"ac":"Ascension Island (Atlantic ocean)",
"au":"Australia",
"at":"Austria",
"az":"Azerbaijan",
"bs":"Bahamas",
"bh":"Bahrain",
"bd":"Bangladesh",
"bb":"Barbados",
"by":"Belarus",
"be":"Belgium",
"bz":"Belize",
"bj":"Benin",
"bm":"Bermuda",
"bt":"Bhutan",
"bo":"Bolivia",
"ba":"Bosnia",
"bw":"Botswana",
"bv":"Bouvet Island (Atlantic ocean)",
"br":"Brazil",
... }
[编辑 2]
我正在使用此代码读取 JSON 数据并将其转换为 NSDictionary:
NSURL *jsonPath = [[NSBundle mainBundle] URLForResource:@"countries" withExtension:@"json"];
NSString *stringPath = [jsonPath absoluteString];
NSData *countriesJSON = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringPath]];
NSDictionary *parsedJson = [NSJSONSerialization JSONObjectWithData:countriesJSON options:0 error:nil];
【问题讨论】:
-
能否分享一下你收到数据的json格式
-
将 JSON 数组转换为 NSDictionary 的代码是什么
-
What's the easiest way to preserve to original order?Dictionary 不是有序容器。没有原始订单之类的东西。如果要排序,请先排序。 -
@Desdenova:如您所见,原始 JSON 数据是有序的。当我将 JSON 数据转换为 NSDictionary 时,它就会丢失。因此我的问题;)
-
不,不是。下次打印时,您可能会收到相同的订单,也可能不会。
标签: ios objective-c json xcode nsdictionary