【发布时间】:2018-01-09 11:42:49
【问题描述】:
1.这是响应字符串
{"error_msg": null,"applicationStateJson": {"notifications_size": "0","dfilterlogin": 1,"loginstype": null,"email_status": "0","address_status": "0","defaultfiltername": "hyderabad","login_status": "1","defaultfilterid": 145,"profile_id": null,"freelancer": "Y","otp_status": "1","notifications": []},"status": null}
2。下面一个是完美的 JSONObject,我使用 JSONLint
{
"error_msg": null,
"applicationStateJson": {
"notifications_size": "0",
"dfilterlogin": 1,
"loginstype": null,
"email_status": "0",
"address_status": "0",
"defaultfiltername": "hyderabad",
"login_status": "1",
"defaultfilterid": 145,
"profile_id": null,
"freelancer": "Y",
"otp_status": "1",
"notifications": []
},
"status": null
}
3.当我在 Swift 3 中尝试以下代码时
let json1 = try? JSONSerialization.jsonObject(with: data, options: [])
if let object = json1 as? [String: Any]{
if let applicationState = object["applicationStateJson"] as? [String: Any]{
print("applicationState \(applicationState)")
}
}
4.我得到了 JSONObject,但它不是正确的 JSONObject
(因为逗号变成了分号,所以null值变成了“
Optional({
applicationStateJson = {
"address_status" = 0;
defaultfilterid = 145;
defaultfiltername = hyderabad;
dfilterlogin = 1;
"email_status" = 0;
freelancer = Y;
"login_status" = 1;
loginstype = "<null>";
notifications = (
);
"notifications_size" = 0;
"otp_status" = 1;
"profile_id" = "<null>";
};
"error_msg" = "<null>";
status = "<null>";
})
我想要第 2 步那样的 JSONObject,有什么帮助吗?
【问题讨论】:
-
它是一样,只是从JSON字符串转换为Swift Dictionary对象
-
如何再次更改 JSON 字符串?
-
最后,我找到了方法,{if let theJSONData = try? JSONSerialization.data(withJSONObject: applicationState, options: .prettyPrinted), let theJSONText = String(data: theJSONData, encoding: String.Encoding.ascii) { print("JSON string = \n(theJSONText)") }}
-
我能问一下为什么要将 JSON 字符串转换为 Swift 对象,然后再次部分创建 JSON 字符串吗?听起来你正在做你不需要做的事情
-
为什么因为我想从 JSON 对象中解析 JSON 对象,也就是我想要响应中的 applicationStateJson