将一个简单的字符串转换为 JSON swift 中的字符串
Convert a simple string to JSON String in swift
我知道有一个同标题的问题。但是在那个问题中,他试图将字典转换为 JSON。但是我有一个像这样的简单刺痛:
"garden"
而且我必须将其发送为 JSON。我试过 SwiftyJSON,但我仍然无法将其转换为 JSON。
这是我的代码:
func jsonStringFromString(str:NSString)->NSString{
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
let json = JSON(data: strData!)
let jsonString = json.string
return jsonString!
}
我的代码在最后一行崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
我是不是做错了什么?
JSON has to be an array or a dictionary,不能只有一个字符串。
我建议您创建一个包含字符串的数组:
let array = ["garden"]
然后从这个数组创建一个 JSON 对象:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data
}
如果您需要此 JSON 作为字符串而不是数据,您可以使用此:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data, an array containing the String
// if you need a JSON string instead of data, then do this:
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON data decoded as a String
print(content)
}
}
打印:
["garden"]
如果您更喜欢字典而不是数组,请遵循相同的想法:创建字典然后转换它。
let dict = ["location": "garden"]
if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []) {
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON dictionary containing the String
print(content)
}
}
打印:
{"location":"garden"}
Swift 3 版本:
let location = ["location"]
if let json = try? JSONSerialization.data(withJSONObject: location, options: []) {
if let content = String(data: json, encoding: .utf8) {
print(content)
}
}
我知道有一个同标题的问题
而且我必须将其发送为 JSON。我试过 SwiftyJSON,但我仍然无法将其转换为 JSON。
这是我的代码:
func jsonStringFromString(str:NSString)->NSString{
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
let json = JSON(data: strData!)
let jsonString = json.string
return jsonString!
}
我的代码在最后一行崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
我是不是做错了什么?
JSON has to be an array or a dictionary,不能只有一个字符串。
我建议您创建一个包含字符串的数组:
let array = ["garden"]
然后从这个数组创建一个 JSON 对象:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data
}
如果您需要此 JSON 作为字符串而不是数据,您可以使用此:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data, an array containing the String
// if you need a JSON string instead of data, then do this:
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON data decoded as a String
print(content)
}
}
打印:
["garden"]
如果您更喜欢字典而不是数组,请遵循相同的想法:创建字典然后转换它。
let dict = ["location": "garden"]
if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []) {
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON dictionary containing the String
print(content)
}
}
打印:
{"location":"garden"}
Swift 3 版本:
let location = ["location"]
if let json = try? JSONSerialization.data(withJSONObject: location, options: []) {
if let content = String(data: json, encoding: .utf8) {
print(content)
}
}