Ios 在swift 4中将JSON对象转换为数组

Ios 在swift 4中将JSON对象转换为数组,ios,swift,Ios,Swift,我想从下面的JSON访问一些数据,因为我需要将JSON转换为数组格式 URLSession.shared.dataTask(with: request) { (data, response, err) in guard let data = data else {return} do { let parsedData = try JSONSerialization.jsonObject(with: data, options: .mu

我想从下面的JSON访问一些数据,因为我需要将JSON转换为数组格式

   URLSession.shared.dataTask(with: request) { (data, response, err) in
        guard let data = data else {return}
        do {
            let parsedData = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]

            if let allResult = parsedData["fps"] as? [String: Any] {
                if let allDataProviders = allResult["dataProviders"] as? [String: Any] {
                    if let allData = allDataProviders["data"] as? [String: Any] {
                        if let allFieldValues = allData["ms.vss-work-web.new-work-items-hub-default-data-provider"] as? [String: Any] {
                            if let allFieldValuesData = allFieldValues["fieldValues"] as? [Any] {
                                for data in 0..<allFieldValuesData.count {
                                    print(allFieldValuesData[data])
                                }
                            }
                        }
                    }
                }
            }
        }
        catch let error {
            print(error)
        }
        }.resume()
URLSession.shared.dataTask(with:request){(data,response,err)在
guard let data=data else{return}
做{
让parsedData=try JSONSerialization.jsonObject(使用:data,options:.mutableContainers)作为![String:Any]
如果让allResult=parsedData[“fps”]作为?[String:Any]{
如果让allDataProviders=allResult[“dataProviders”]作为?[字符串:任意]{
如果让allData=allDataProviders[“数据”]作为?[字符串:任意]{
如果让allFieldValues=allData[“ms.vss-work-web.new work items hub默认数据提供程序”]作为?[字符串:任意]{
如果将allFieldValuesData=allFieldValues[“fieldValues”]设为?[任何]{

对于0中的数据..您到底打印了什么?
。可变容器
不相关。那么使用Codable呢?旁注:您可以避免厄运金字塔™ 通过使用
guard
语句。@Larme使用codable需要声明属性。因此一些属性名称类似于ms.vss-work-web.new-work-items-hub-default-data-provider是否可以在swift中声明同名属性?可以使用该属性,并且可以使用
CodingKeys
使用更短、更可读的属性n您的结构。@JoakimDanielson是的,您是对的,但在json中,一些属性名称类似于ms.vss-work-web.new-work-items-hub-default-data-provider,那么您可以指导我如何声明这样的属性名称吗?您打印的内容到底是什么?
.mutableContainers
与此无关。那么使用Codable呢?旁注:您可以避免使用Pyra厄运中期™ 通过使用
guard
语句。@Larme使用codable需要声明属性。因此一些属性名称类似于ms.vss-work-web.new-work-items-hub-default-data-provider是否可以在swift中声明同名属性?可以使用该属性,并且可以使用
CodingKeys
使用更短、更可读的属性n您的结构。@JoakimDanielson是的,您是对的,但在json中,某些属性名称类似于ms.vss-work-web.new-work-items-hub-default-data-provider,那么您能指导我如何像这样声明属性名称吗
 {
data =     (
    1957,
    "User Story",
    "Design Project Dashboard",
            {
        distinctDisplayName = "Sumit Gupta <sumit.gupta@gmail.com>";
        identityRef =             {
            "_links" =                 {
                avatar =                     {
                    href = "https://orgName.visualstudio.com/_apis/GraphProfile/MemberAvatars/aad.ODJhNzk2MjgtZTNjYi03YmQxLTkyM2EtM2Q2ZDI3ZDIwNDUy";
                };
            };
            descriptor = "aad.ODJhNzk2MjgtZTNjYi03YmQxLTkyM2EtM2Q2ZDI3ZDIwNDUy";
            displayName = "Sumit Gupta";
            id = "1e741317-dc6a-41f5-b942-02dfa8a411f0";
            imageUrl = "https://orgName.visualstudio.com/_apis/GraphProfile/MemberAvatars/aad.ODJhNzk2MjgtZTNjYi03YmQxLTkyM2EtM2Q2ZDI3ZDIwNDUy";
            uniqueName = "sumit.gupta@gmail.com";
            url = "https://spsprodeus21.vssps.visualstudio.com/Acf2ada01-867f-4337-b722-208aa88fec4d/_apis/Identities/1e741317-dc6a-41f5-b942-02dfa8a411f0";
        };
    },
    Resolved,
    "VSO Client",
    "<null>",
    0,
    "/Date(1554882629083)/"
);
}