Swift 2 Json解析数组并获得“nil”

时间:2016-02-23 19:18:21

标签: json swift

我正在尝试为自己编写一个简单的剪贴板翻译器。所以我使用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”

我该如何解决这个问题?我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

试试这个索引

trans_result[0].dst

使用codebeautify

显示json数据

答案 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_resultdst之间还有一层,这意味着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)
    }
}