按维护顺序快速解析json

假设我有一个json字符串,其中有一个名为data的json数组。 阵列保持例如姓名,年龄,性别等用户简档数据的JSON对象按维护顺序快速解析json

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

{ 

"name": "sample name",

"age": "30",

"gender": "male"

}

我想按照像name,age,gender这样的顺序解析列表,但是使用ios,当我将json对象转换为字典时,顺序发生了变化,我知道字典没有排序,所以实现此目的的替代方法是什么?

它的第三方api所以我没有任何的手,我们已经在android中使用链接哈希映射完成它,但真的卡在迅速,我想要做的最后一件事是用正则表达式解析。

IM解析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.

}

这将确保你所期望的顺序。

回答:

正如您所提到的,您无法获取Dictionary中的有序数据。如果可能的话,你可以在你的JSON添加“命令”键像

[ 

{

"name": "sample name",

"order": 1

},

{

"age": "30",

"order": 1

},

{

"gender": "",

"male": "",

"order": 1

}

]

,以便根据订单键可以进行排序。

以上是 按维护顺序快速解析json 的全部内容, 来源链接: utcz.com/qa/259637.html

回到顶部