Ios 如何解析对字符串数组的响应
我想把它解析到我的MobileOperator数组中Ios 如何解析对字符串数组的响应,ios,arrays,swift,Ios,Arrays,Swift,我想把它解析到我的MobileOperator数组中 var mobileOprator = [String]() // My Array //My Response Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \
var mobileOprator = [String]() // My Array
//My Response
Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]")
与此相同,只是为了更好地可视化数据
Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]")
由于数据是可选的,我们应该检查它是否存在,以及它是否开始解析。这可以使用以下语法完成:
Optional("[
\"Aircel\",
\"Airtel\",
\"BSNL\",
\"Idea MTV\",
\"MTNL\",
\"MTS\",
\"Reliance CDMA\",
\"Reliance GSM\",
\"Reliance JIO\",
\"TATA CDMA\",
\"TATA DOCOMO\",
\"Telenor\",
\"Videocon\",
\"Vodafone\"
]")
其中,optional\u a
可以是任何可选的数据类型,a
是非可选的
。基本上,Swift检查它是否为nil
,如果不是,则将其分配给a
接下来,对于解析,String类有一个名为replacingOccurences(of:String!,with String!)
的函数。将此视为查找并替换所有函数。这可用于删除任何无关字符,如“\n”、“\”、“\”、“\”、“[”、“]”和“.”。删除这些字符后,我们需要将字符串拆分为“,”并将其映射到数组中
此代码应适用于:
if let a = optional_a {
}
通过这种方式,我得到了我想要的数组,使用了SwiftyJSON进行解析。
MobileOperator
不是一个可选的
,因此打印显示了其他内容。可能是某个函数的结果/返回值。显示更多代码。添加到shallowthough,如果您是从后端获得JSON,那么打印整个JSON或发布url以便我们可以帮助您MobileOperator是我的数组,而我在API调用后得到的响应我希望这些数据被附加到MobileOperator数组中。感谢您的回答,这是正确的方法,但我使用SwiftyJSON解决了它。我将在这里发布答案。
var optionalResponse = Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]")
if var response = optionalResponse {
let charsToRemove = ["\n", "\"", "\\", "[", "]", " "]
for char in charsToRemove {
response = response.replacingOccurrences(of: char, with: "")
}
let fullNameArr = response.characters.split{$0 == ","}.map(String.init)
print(fullNameArr)
}
if let dataa = data as? String{
if let dataFromString = dataa.data(using: String.Encoding.utf8, allowLossyConversion: false) {
let json = JSON(data: dataFromString)
for (_, val) in json {
self.mobileOprator.append(val.rawString()!)
}
}
}