使用SwiftyJSON从JSON读取数据时获取Null作为回报

乌迈尔·阿夫扎尔(Umair Afzal)

我正在从两个地方读取JSON:1)来自文件,2)来自url。这是我的JSON文件

{
"People": {

    "Person1" : {

        "Name" : "Umair",
        "Age" : "22"
    },

    "Person2" : {

        "Name" : "Rehman",
        "Age" : "28"
    },

    "Person3" : {

        "Name" : "Saqib",
        "Age" : "32"
    },

    "Person4" : {

        "Name" : "Fahad",
        "Age" : "18 "
    },

  }
}

这就是我用SwiftyJson读它的方式

let path: String = NSBundle.mainBundle().pathForResource("jsonFile", ofType: "json") as String!
let jsonData = NSData(contentsOfFile: path) as NSData!
let readableJSON = JSON(data: jsonData, options: .MutableContainers, error: nil)
var myName = readableJSON["People","Person1","Name"]
print(myName)

结果,它给我的名字在这里没有问题。当我尝试使用相同的方法从url获取Json时,我得到完整的Json文件作为回报,但是当我尝试获取特定字段时,它返回null。这是我的代码

    let url = NSURL(string: "http://api.randomuser.me/")
    let session = NSURLSession.sharedSession()
    session.dataTaskWithURL(url!, completionHandler: { ( data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in

        // Make sure we get an OK response
        guard let realResponse = response as? NSHTTPURLResponse where
            realResponse.statusCode == 200 else {
                print("Not a 200 response")
                return
        }

        // Read the JSON                
            let readableJSONFromWeb = JSON(data: data!, options: .MutableContainers, error: nil)
            var origin = readableJSONFromWeb["results"]
            print(origin)


    }).resume()
}

按照上面的代码我得到这个输出

Umair
[
 {
  "id" : {
   "name" : "SSN",
   "value" : "026-36-3780"
 },
"nat" : "US",
"cell" : "(862)-296-4803",
"phone" : "(528)-560-7652",
"login" : {
  "username" : "ticklishmouse295",
  "password" : "julie",
  "sha256" : "01234103cae3a10c5813a7c5dfd069e2533860cf2786df4dc31a501eb66b9c37",
  "sha1" : "46fa91a26c5219823b0c4a2c0fd99d390c997cd9",
  "salt" : "aU4VTMOV",
  "md5" : "be3f89edd4f22f333433d2424cbf4a95"
},
"registered" : 1144149087,
"dob" : 1170844810,
"picture" : {
  "large" : "https:\/\/randomuser.me\/api\/portraits\/women\/40.jpg",
  "thumbnail" : "https:\/\/randomuser.me\/api\/portraits\/thumb\/women\/40.jpg",
  "medium" : "https:\/\/randomuser.me\/api\/portraits\/med\/women\/40.jpg"
},
"location" : {
  "state" : "north carolina",
  "street" : "9402 mcclellan rd",
  "city" : "arvada",
  "postcode" : 93836
},
"email" : "[email protected]",
"gender" : "female",
"name" : {
  "title" : "mrs",
  "first" : "ethel",
  "last" : "palmer"
}
}
]

但是当我尝试使用

var origin = readableJSONFromWeb["results","location"]

我得到null作为回报

埃里克·艾亚(Eric Aya)

使用SwiftyJSON这样的下标:

var origin = readableJSONFromWeb["results","location"]

仅在整个路径由字典组成的情况下才有效

但是您的results键包含一个array,因此您必须传递要获取的数组项的索引。

从数组中获取第一项的示例:

var origin = readableJSONFromWeb["results",0,"location"]

结果:

{
  "city" : "sittard-geleen",
  "postcode" : 85004,
  "street" : "4774 pieterskerkhof",
  "state" : "flevoland"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在没有JQuery的情况下将JSON发送到服务器并获取JSON作为回报

尝试使用springboot从POST请求主体读取嵌套JSON时获取null

我想使用间谍模拟方法,但我需要获取一些虚拟数据作为回报

尝试使用Spring发布数据时获取null

如何通过HTTP GET发送JSON并获取状态码作为回报?

使用SwiftyJSON和Alamofire访问JSON数据

使用SwiftyJSON获取JSON解析字典的键

Spark读取json对象数据作为MapType

如何使用SwiftyJSON从JSON.Element获取元素

使用Swift,AlamoFire和SwiftyJSON解析JSON数据

Bash-在MacOS上获取空数组作为回报

使用Boto3将base64字符串(图像数据)上传到Python中的S3服务器,并获取URL作为回报

使用Google文档作为数据端点获取JSON

如何使用SwiftyJSON读取数组中的JSON数据?

Flutter:使用fromJson()方法解码json文件时获取“ null”

从文件获取和读取数据时出错

使用SwiftyJSON读取本地JSON文件

SwiftyJSON读取文件-null

使用SwiftyJSON读取JSON数据

将数据发布到PHP并使用SwiftyJSON获取JSON

使用HTTP'GET'作为请求方法时获取HTML而不是JSON数据

当我读取 json 数据时,获取 `undefined is not an object`

尝试使用 SwiftyJSON 使用 swift 3 解析 JSON 数据

使用ajax获取json数据时出错

从postgresql读取数据时,无法在flink中获取Json数据

需要帮助使用 SwiftyJSON 用 JSON 数据填充数组

我如何使用 Retrofit 从 json 中获取数据作为列表

使用python从API获取JSON数据时获取keyerror

类型错误:绑定可能为空的标记 json 数据时,无法读取 null 的属性“map”