web-dev-qa-db-ja.com

SwiftyJSONを使用して文字列をJSONに変換する方法

変換する文字列:

_[{"description": "Hi","id":2,"img":"hi.png"},{"description": "pet","id":10,"img":"pet.png"},{"description": "Hello! :D","id":12,"img":"hello.png"}]_

文字列を変換するコード:

var json = JSON(stringLiteral: stringJSON)

文字列はJSONに変換され、このJSON内にあるブロックの数を数えようとすると(予想される回答= 3)、0になります。

print(json.count)

コンソール出力:_0_

私は何が欠けていますか?ヘルプは大歓迎です。

26

こんにちは、私はこの方法で修正します...

注:JSONを含む変数として変数「string」を使用します

このようにNSDataでスティングをエンコードします

_var encodedString : NSData = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)!
_

2ºエンコードされた文字列のエンコードを解除します(これは少し奇妙に聞こえるかもしれませんが)

_var finalJSON = JSON(data: encodedString)
_

そして、あなたはこのJSONで好きなことをすることができます! :D

その中のセクションの数を取得するようなものです(これが本当の質問でした)

_finalJSON.count_またはprint(finalJSON[0])またはあなたがしたいこと.

だから、私が見つけた方法を楽しむことを願っています!

コーディングを続ける、ガブリエル・クアドロス:D

14

実際、parseと呼ばれる組み込み関数がSwifyJSONにありました

/**
 Create a JSON from JSON string
- parameter string: Normal json string like '{"a":"b"}'

- returns: The created JSON
*/
public static func parse(string:String) -> JSON {
    return string.dataUsingEncoding(NSUTF8StringEncoding)
        .flatMap({JSON(data: $0)}) ?? JSON(NSNull())
}

ご了承ください

var json = JSON.parse(stringJSON)

その今に変更

var json = JSON.init(parseJSON:stringJSON)
40
HamGuy

私は次のように使用しています:

let yourString = NSMutableString()

let dataToConvert = yourString.data(using: String.Encoding.utf8.rawValue)

let json = JSON(data: dataToConvert!)

print("\nYour string: " + String(describing: json))
2
Machado

Swift4

let json = string.data(using: String.Encoding.utf8).flatMap({try? JSON(data: $0)}) ?? JSON(NSNull())
1
Maxim Firsoff