2016-08-25 2 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

관련 문제