我需要设置一个包含一些json的标题。我试过以下几点。有可能吗?你能做到吗?注意,我使用的是SwiftyJSON,因此JSON(jsonVar). rawString()
来自SwiftyJSON:
公共函数rawString(编码: UInt = NSUTF8StringEncoding,选项选择: NSJSONWritingOptions = .PrettyPrinted) ->字符串?{ switch self.type { case .Array,.Dictionary:{ let data = try self.rawData(选项: opt)返回NSString(数据:数据,编码:编码)为?字符串} catch _{ return } case .String:返回self.rawString case .Number:返回self.rawNumber.stringValue case .Bool:返回self.rawNumber.boolValue.description case .Null:返回"null“默认值:返回nil }}
let addthis = [
"foo": [1,2,3],
"bar": [
"baz": "qux"
]
]
let headers = [
// "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Content-Type": "application/x-www-form-urlencoded",
"addthis":" \(JSON(addthis).rawString()) "
]我在http服务器上得到了这个:
Optional("{\n \"foo\" : [\n 1,\n 2,\n 3\n ],\n \"bar\" : {\n \"baz\" : \"qux\"\n }\n}")发布于 2015-11-20 14:31:37
let headers = [
"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Content-Type": "application/x-www-form-urlencoded",
"addthis": JSON(addthis).rawString()!
]注意!首先检查.rawString是否是有效字符串!
if let json = JSON(addthis).rawString() {
let headers = [
"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Content-Type": "application/x-www-form-urlencoded",
"addthis": json
]
}..。或者如果空字符串是可接受的
let headers = [
"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Content-Type": "application/x-www-form-urlencoded",
"addthis": JSON(addthis).rawString() ?? ""
]..。
var a: String? = "alfa"
print(a, a.dynamicType) // Optional("alfa") Optional<String>
let b = a ?? ""
print(b, b.dynamicType) // alfa String..。给这个反斜杠带来麻烦..。作为字符串的一部分,必须像“\”那样转义。
发布于 2015-11-20 19:29:45
我相信你唯一能做的就是:
let jsonString = removeUnexpectedCharactersFromJSONString(YOURJSON.rawString()!)我写了一个简单的函数:
func removeUnexpectedCharactersFromJSONString(jsonString: String) -> String {
var newStr = jsonString
newStr = newStr.stringByReplacingOccurrencesOfString("\n", withString: "")
newStr = newStr.stringByReplacingOccurrencesOfString(" ", withString: "")
newStr = newStr.stringByReplacingOccurrencesOfString("\t", withString: "")
return newStr
}

https://stackoverflow.com/questions/33828651
复制相似问题