我正在尝试为自己编写一个简单的剪贴板翻译器。所以我使用API但我无法获得JSON中的真实数据。
这是我的代码
import Cocoa
var url = NSURL(string: "http://api.fanyi.baidu.com/api/trans/vip/translate?q=%E6%B8%AC%E8%A9%A6%E7%94%A8%E6%96%87%E5%AD%97&from=cht&to=zh&appid=20160223000013220&salt=1435660288&sign=0a697bbcbd4686b168cb3255ffea1427")
var data: NSData
var json: AnyObject!
do{
data = try NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingUncached)
json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
}
var transInfo: AnyObject! = json.objectForKey("trans_result['dst']")
在网址中, trans_result [“dst”] 的数据是我想要的答案。但是从下面的代码我只能得到一个“零”而不是“\ u6d4b \ u8bd5 \ u7528 \ u6587 \ u5b57”
我该如何解决这个问题?我错过了什么吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
你可以试试这个
do{
data = try NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingUncached)
let json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
let arrResult = json["trans_result"]
print("Result \(arrResult!![0]["src"])")
}catch {
print("Error in json parsing")
}
答案 2 :(得分:0)
你在这里犯了两个错误
1)您无法通过dst
objectForKey("trans_result['dst']")
的值
2)trans_result
和dst
之间还有一层,这意味着json["trans_result"]
不是Dictionary
而是Array
为了获得所需的价值,并在展开Optional
时使代码安全:
if let array = json.objectForKey("trans_result") as? NSArray where array.count > 0{
if let dst = array[0].objectForKey("dst") {
print(dst)
}
}