2016-08-25 9 views
0

私はJSONの文字列を持っていて、そこからいくつかの値を取得したいと考えています。私はSwiftyJSONを使用してJSON文字列からいくつかの値を抽出しています。しかし、なぜ私はそれから空の値を得ているのか分からない。このJSON文字列からversion, ephemeralPublicKey, transactionIdなどのすべての値をSwiftyJSONを使用して取得するにはどうすればよいですか?SwiftyJSONを使用してSwiftでJSON文字列から値を取得するにはどうすればよいですか?

コード:

let decryptedPaymentData:NSString! = NSString(data: encryptedPaymentData, encoding: NSUTF8StringEncoding) 
print("decryptedPaymentData = \(decryptedPaymentData)") 

//extract values here 
let decryptedJsonStr = JSON(decryptedPaymentData) 
let version = decryptedJsonStr["version"].stringValue 
print("version = \(version)") 

出力:出力付き

decryptedPaymentData = {"version":"EC_v1", 
     "header":{ 
     "ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1AhSWKm/KoXMmRU/dm825c8M3HZUYH/X8SH2zvzLgF9AN0ifWNH6KMLdRXhYSbnhVv0eDz+cJhf0I6o3oSc1bg==","publicKeyHash":"y9Gi+xcoSJjzegmkLQJ1KB7oehqavQom5EDwNCv+nHE=","transactionId":"7f83d3eff0de5d1313b6689d274d29dd7f71fe3763829f488ff4ac23a3dd40c5"} 
     } 

version = 

ソリューション:

let decryptedJsonStr = JSON.parse(decryptedPaymentData as String) 
let version = decryptedJsonStr["version"].stringValue 
let epk = decryptedJsonStr["header"]["ephemeralPublicKey"].stringValue 
print("version = \(version)") 
print("epk = \(epk)") 

version = EC_v1 
epk=MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoyXCcna7anfdPXVJcRFF6+SOgCgCqRqcdx/p0YrTy3nUU1LQ977EwuddRvnHKi5WemLnWIf3AzPDGLMY1L2Pog== 
+0

これがhttp://roadfiresoftware.com/2015/10/how-to-parse-json-with-swift-2/に役立たなかった場合は、少なくともprint()関数から投稿して出力してください得た。 – pedrouan

答えて

1

JSON(decryptedPaymentData)は、文字列"{\"version\":...}"であるJSONオブジェクトを作成するだけです。

let decryptedJsonStr = JSON(data: encryptedPaymentData) 
//       ^^^^^ 
:あなたは init(data:options:error:)コンストラクタを使用できるよう、あなたが、あなた自身をNSStringのへのNSDataを変換する必要はありません

let decryptedJsonStr = JSON.parse(decryptedPaymentData) 
//       ^^^^^ 

注:

は、それを解析するには、parse()機能を使用する必要があります

+0

しかし、 'header'キーの中に埋め込まれている' ephemeralPublicKey'のようなものを得るにはどうすればいいですか? – user2325154

+0

@ user2325154 'decryptedJsonStr [" header "] [" ephemeralPublicKey "]。文字列値 – kennytm

+0

パーフェクト!それはうまくいった!ソリューションに感謝します。私は元の投稿を解決策で更新しました。 – user2325154

関連する問題