Search code examples
iosjsonswiftnsarrayalamofire

How to convert '__NSIArrayI' to JSON Array in Swift?


I am new to Swift 4 and working on an iOS app. I have the following JSON data retrieved from the server which will be extracted to data table.

[
  {
    "fund_nav_validity":"24 August to 31 August 2016\n",
    "fund_nav_cost":10,
    "fund_nav_sell":9.85,
    "nav_id":118,
    "fund_nav_buy":10,
    "fund_id":1,
    "nav_as_on_date":"24-Aug-16",
    "fund_nav_market":9.95
  },
  {
    "fund_nav_validity":"04 September to 07 September 2016\n",
    "fund_nav_cost":10,
    "fund_nav_sell":9.85,
    "nav_id":117,
    "fund_nav_buy":10,
    "fund_id":1,
    "nav_as_on_date":"01-Sep-16",
    "fund_nav_market":9.95
 }
]

I have done following task in the navdata function to retrieve the '__NSIArrayI' to JSON:

func getNAVData(){
        Alamofire.request(url, method: .post).responseJSON{
            response in
            if response.result.isSuccess{
                print("Success")
                //let navDataJSON : JSON = JSON(response.result.value!
                let navDataJSON : JSON = JSON(response.result.value!)

                print(navDataJSON)
            }else{
                print("Failed")
            }
        }

    }

I need to convert it to JSON Array which is done in java. How to do the similar task in Swift 4?


Solution

  • you are in the right way, in here you need to convert your JSON response to array the reason your json started with this type[{}] and check your JSON response contains the value or not in intially. try the below code

     if response.result.isSuccess{
                print("Success")
                // convert your JSON to swiftyJSON array type if your JSON response as array as well as check its contains data or not
                 guard let resJson = JSON(responseObject.result.value!).array ,  !resJson.isEmpty else { return
                }
                // create the Swifty JSON array for global access like wise
                var navDataJSON  =  [JSON]() //[JSON]() --> Swifty-JSON array memory allocation.
                navDataJSON =  resJson
    
    
            }