如何使用SwiftyJSON从Swift中获取JSON字符串的值?
我有一个JSON
字符串,并希望从它获得一些值。我正在使用SwiftyJSON
从JSON字符串中提取一些值。但不知道为什么我从中获得空值。如何从这个JSON字符串中使用SwiftyJSON
检索所有值,如version, ephemeralPublicKey, transactionId
等?如何使用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==
JSON(decryptedPaymentData)
只是构造一个字符串为"{\"version\":...}"
的JSON对象。
解析它,你需要使用parse()
功能:
let decryptedJsonStr = JSON.parse(decryptedPaymentData)
// ^^^^^
请注意,您不需要NSData的转换成的NSString你自己,因为你可以使用init(data:options:error:)
构造:
let decryptedJsonStr = JSON(data: encryptedPaymentData)
// ^^^^^
好的,但是我怎样才能得到嵌入'header'键中的'ephemeralPublicKey'? – user2325154
@ user2325154'decryptedJsonStr [“header”] [“ephemeralPublicKey”]。stringValue' – kennytm
完美!这工作!非常感谢您的解决方案。我已经用解决方案更新了我的原始帖子。 – user2325154
如果这没有帮助http://roadfiresoftware.com/2015/10/how-to-parse-json-with-swift-2/,请张贴并输出,至少从print()函数,你得到。 – pedrouan