同じタイトルの質問があることを知っています here 。しかし、その質問では、彼は辞書をJSONに変換しようとしています。しかし、私はこのような単純な刺し傷を持っています:「庭」
そして、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は配列またはディクショナリでなければなりません 、文字列のみにすることはできません。
Stringを含む配列を作成することをお勧めします。
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)
}
}
プリント:
["庭園"]
配列よりも辞書が必要な場合は、同じ考えに従ってください:辞書を作成してから変換します。
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)
}
}
プリント:
{「場所」:「庭」}
Swift 3バージョン:
let location = ["location"]
if let json = try? JSONSerialization.data(withJSONObject: location, options: []) {
if let content = String(data: json, encoding: .utf8) {
print(content)
}
}