OptimizelyJSON
Since statically typed languages lack native support for JSON, the Swift SDK uses the OptimizelyJSON object to retrieve JSON in a flexible way.
Version
SDK v3.4.0 and higher
Methods
You can access JSON representations with the following methods:
Method | Parameters | Description |
---|---|---|
| none | Returns a string representation of the JSON object |
| none | Returns a map representation of the JSON object: |
|
| Returns a specified schema object ( If JSON key is null or empty, it populates your schema object with all JSON key/value pairs. You can retrieve information for a nested member of the JSON data structure by using flattened JSON dot notation. |
Object definition
The OptimizelyJSON object is defined as follows:
public class OptimizelyJSON: NSObject {
public func toString() -> String?
public func toMap() -> [String: Any]
public func getValue<T: Decodable>(jsonPath: String? = nil) -> T?
public func getValue<T>(jsonPath: String?) -> T?
}
Examples
You can easily use OptimizelyJSON
object, for example to:
- Get a JSON string by calling the
toString
method, or - Retrieve a specified schema from the
OptimizelyJSON
object by calling thegetValue
method.
The following example shows how to use an OptimizelyJSON object to populate a schema object you declare.
//declare a schema object into which you want to unmarshal OptimizelyJson content:
struct SSub: Decodable {
var field: String = ""
}
struct SObj: Decodable {
var field1: Int = 0
var field2: Double = 0.0
var field3: String = ""
var field4: SSub = SSub()
}
//parse all json key/value pairs into your schema, sObj
let robj: SObj? = self.optimizelyJSON.getValue()
//or, parse the specified key/value pair with an integer value
let rint: Int? = self.optimizelyJSON.getValue(jsonPath: "field1")
//or, parse the specified key/value pair with a string value
let strValue: String? = self.optimizelyJSON.getValue(jsonPath: "field4.field")
Source
The language/platform source files containing the implementation for Swift is OptimizelyClient.swift.
Updated over 2 years ago