ios - 按照维护顺序快速解析 json

标签 ios json swift

假设我有一个 json 字符串,其中有一个名为 data 的 json 数组。 该数组保存用户个人资料数据的 json 对象,例如姓名、年龄、性别等。

现在想要按顺序解析该 json 对象,例如,如果该对象是

{
    "name": "sample name",
    "age": "30",
    "gender": "male"

}

我想按 name,age,gender 的顺序解析列表,但是在 ios 中,当我将 json 对象转换为字典时,顺序发生了变化,我知道字典没有排序,那又怎样是实现这一目标的替代方案吗?

它是第三方 API,所以我没有任何帮助,我们已经在 Android 中使用链接 HashMap 完成了它,但实际上陷入了 swift 中,我想做的最后一件事就是用正则表达式进行解析。

我按以下方式解析 json :

var rootData = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
  if let val = fromList["data"] {

let dataNode = val as! [[String:Any]]

for row in dataNode {


 for (key,keyVal) in row {
//here the key is not in order.because when we cast it as dictionary the order gets changed.


   }

}

对于 Android,我们已经通过以下功能实现了这一点:

public ArrayList<LinkedHashMap<String, Object>> parseJsonArrayList(String odata, String arrayName) {
ArrayList<LinkedHashMap<String, Object>> mylist = new ArrayList<>();

try {
JSONObject e = new JSONObject(odata);
JSONArray data = e.getJSONArray(arrayName);

for(int i = 0; i < data.length(); ++i) {
JSONObject v = data.getJSONObject(i);
LinkedHashMap<String, Object> map = new LinkedHashMap<>(100, 0.75f, false);
Iterator keys = v.keys();

while(keys.hasNext()) {
String key = String.valueOf(keys.next());
//gph.log("debug4", key);
map.put(key, v.getString(key));
//gph.log("debug4", v.getString(key));
}

mylist.add(map);
}
} catch (JSONException var10) {
var10.printStackTrace();
}

return mylist;
}  

最佳答案

不要尝试订购词典。相反,按照您想要的顺序创建一个键数组:

let keys = [“name”, “age”, “gender”]

然后用它们访问字典:

for key in keys {
    let value = dict[key]
    // Present the value.
}

这将确保您期望的顺序。

关于ios - 按照维护顺序快速解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615583/

相关文章:

ios - Xcode 7 : WatchOS storyboards do not support target device type 'iphone'

java - 安卓 : BasicSyncAdapter with parser JSON ANDROID

ios - 转到嵌套 TableView Controller 后缺少选项卡栏

ios - viewForSupplementaryElementOfKind 没有被调用

json - Rust 宏可以解析 JSON 吗?

ios - 使用惰性变量时的编译错误

ios - 使用计时器更改注释上的图像 - Swift

objective-c - 制作框架时从 swift 文件中删除注释

ios - 是否可以使用 NSDateFormatter 解析 "Fri, 24 Feb 2012 20:00:00 GMT"?

arrays - 为什么在 swift 中无法在数组中添加 json 键值