Convert JSON String to NSDictionary in Swift

In this tutorial, you will learn how to convert JSON string to NSDictionary in Swift.

By the end of this tutorial, you will have a working Swift code example that you can use in your mobile application.

Step 1: Preparing Your JSON String

Let’s assume you have a JSON string that you want to convert into an NSDictionary. Here’s an example JSON string:

let jsonString = "{\"name\":\"Ferdous\", \"age\":25, \"city\":\"New York\"}"

Step 2: Converting JSON String to NSDictionary

To convert this JSON string into an NSDictionary, you can use the JSONSerialization class provided by Swift. This class can convert JSON data into Foundation objects like dictionaries, arrays, and strings.

Here’s how you can do it:

if let data = jsonString.data(using: .utf8) {
    do {
        if let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
            print(jsonDictionary)
        }
    } catch {
        print("Failed to convert JSON string to NSDictionary: \(error.localizedDescription)")
    }
}

In this code:

  • You first convert the JSON string into Data using UTF-8 encoding.
  • Then, you use JSONSerialization.jsonObject(with:options:) to convert the Data into an NSDictionary. You specify an empty options array because we don’t need to do any special processing on the JSON data.
  • The as? NSDictionary part is a conditional cast that tries to convert the result into an NSDictionary. If the conversion is successful, you print the dictionary. If not, you catch the error and print an error message.

Step 3: Handling the Result

If the conversion is successful, you’ll get an NSDictionary that you can use in your Swift code. For example, you can access values by their keys:

if let name = jsonDictionary["name"] as? String {
    print("Name: \(name)")
}

This will print Name: James if the conversion was successful.

Complete Code Example

Here’s the complete code example based on the steps above. This example demonstrates how to convert a JSON string into an NSDictionary and print the name value when a button is tapped using SwiftUI.

import SwiftUI

struct ContentView: View {
    
    func convertJsonToNSDictionary() {
        let jsonString = "{\"name\":\"Ferdous\", \"age\":25, \"city\":\"New York\"}"
        
        if let data = jsonString.data(using: .utf8) {
            do {
                if let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
                    if let name = jsonDictionary["name"] as? String {
                        print("Name: \(name)")
                    }
                }
            } catch {
                print("Failed to convert JSON string to NSDictionary: \(error.localizedDescription)")
            }
        }
    }

    
    var body: some View {
        VStack {
            Button("Perform Request", action: {
                convertJsonToNSDictionary()
            })
        }
    }
}

JSON Strings and NSDictionary

Conclusion

I hope this tutorial was helpful to you.

To learn more about Swift and to find other code examples, check the following page: Swift Code Examples.

Keep coding!