首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS (Swift)应用程序在JSON解析上崩溃

iOS (Swift)应用程序在JSON解析上崩溃
EN

Stack Overflow用户
提问于 2019-07-23 07:02:56
回答 2查看 195关注 0票数 0

我在iOS (Swift)应用程序中调用rest,并在JSON中获得响应。但是,当我试图解析它时,应用程序就会崩溃。

代码语言:javascript
复制
let myData = jsonString.data(using: .utf8)

代码:

代码语言:javascript
复制
print("JSON Response String: \(String.init(data: data!, encoding: .utf8))")

var jsonString:String = String.init(data: data!, encoding: .utf8)!

jsonString = jsonString.replacingOccurrences(of: "\\", with: "") 

let myData = jsonString.data(using: .utf8)                            

let dict:[String:Any] = (try JSONSerialization.jsonObject(with: myData!, options: []) as? [String:Any])!

print("JSON Response Dictionary: \(dict)")

崩溃日志

JSON响应字符串:可选(“{ \n \”ConsumerID\:\“w4wccKqF9qN0biUM3HvGMDK27Q2\”,\n \"resultCount\":10,\n \"resultList\":\n \“泰式Basil\",\n \”泰式菠萝咖喱\“,\n \”泰国生菜卷\“,\n \”泰国绿色咖喱“,\n \”泰国红咖喱\“,\n\”泰豆串虾\“,“泰式巴兹尔茄子\n \\”泰国巴兹尔醉面\\“帕德·基·毛\\”,\n \\“泰国智利鱼”,\n \"1.泰国鸡蛋卷(3)\“\”n}“)

崩溃日志:

捕获: Error Domain=NSCocoaErrorDomain Code=3840“字符305左右的错误数组。UserInfo={NSDebugDescription=Badly在字符305左右形成数组。}

EN

回答 2

Stack Overflow用户

发布于 2019-07-23 07:28:24

我想是因为这行代码:

代码语言:javascript
复制
jsonString = jsonString.replacingOccurrences(of: "\\", with: "") 

因此,您必须使用正确的转义字符:

以下字符是在JSON中保留的,必须正确转义才能用于字符串中:

代码语言:javascript
复制
Backspace is replaced with \b
Form feed is replaced with \f
Newline is replaced with \n
Carriage return is replaced with \r
Tab is replaced with \t
Double quote is replaced with \"
Backslash is replaced with \\

所以正确的方法是:

代码语言:javascript
复制
jsonString = jsonString.replacingOccurrences(of: "\\", with: "\\"")
票数 1
EN

Stack Overflow用户

发布于 2019-07-23 07:35:58

根据您的json响应日志,后端似乎正在返回无效的json响应。下面应该是正确的json响应。

代码语言:javascript
复制
{  
   "ConsumerID":"w4wccKqF9qN0biUM3HGvGMDK27Q2",
   "resultCount":10,
   "resultList":[  
      "Thai Basil",
      "Thai Pineapple Curry",
      "Thai Lettuce Wrap",
      "Thai Green Curry",
      "Thai Red Curry",
      "Thai String Bean Shrimp",
      "Thai Basil Eggplant",
      "Thai Basil Drunken Noodle \"Pad Kee Mao\"",
      "Thai Chili Fish",
      "1. Thai Egg Roll(3)"
   ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57158414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档