2015-01-30 2 views
1

У меня есть JSON объект:Невозможно присвоить JSON массив или объект JSON в JSON с помощью SwiftyJson в прошивкой

var x: JSON = JSON([:]) 
x["1"].intValue = 1      //Correct 
x["2"].arrayValue = [JSON("2")]   //Error 
x["3"].dictionaryValue = [3:JSON("3")] //Error 

Я могу присвоить целое число х, но я не могу присвоить любой массив JSON или любой словарь JSON. Что я делаю неправильно и как мне это решить?

ответ

-1

Попробуйте это:

var x = JSON([:]) 

x["1"] = 1 
x["2"] = [2] 
x["3"] = ["3":4] 

println(x) 
+0

Привет. Пример, который я дал, - это не точный код, над которым я работаю. Я хочу поместить массив JSON в объект JSON, и я ищу способ сделать это. Вышеприведенное является лишь примером того, чего я пытаюсь достичь. – Rishi

+0

@Rishi Просто назначьте массив как 'x [" 2 "] = [2,3,4,5]', разве это не работает? – skyline75489

+0

Это работает. Но это массив. Я хочу назначить массив JSON. – Rishi

0

По состоянию на сегодняшний день, SwiftyJSON README.md говорит вам использовать

json.array = [1,2,3,4] 

, но на самом деле смотреть на SwiftyJSON.swift под MARK: - массив, расширение JSON. array и arrayValue, вы должны использовать только

json.arrayObject = [1,2,3,4] 

, который работает, если элементы массива являются родными. Если вы хотели бы назначить [JSON] в формате JSON, то есть массив объектов JSON на новый объект JSON попробовать это

// Patch SwiftyJSON to support constructing a JSON out of [JSON] 
extension JSON { 
    public init(_ jsonArray:[JSON]) { 
     self.init(jsonArray.map { $0.object }) 
    } 
} 

и, таким образом,

json["subarray"] = JSON(someArrayOfJSON) 
1

Предполагая, что вы изначально хотели присвоить массив объектов JSON:

// doesnt work 
x["1"].arrayObject = [ JSON(["1" : "2"]), JSON([ "3" : "4" ]) 

Попробуйте это:

x["1"] = JSON([ JSON(["1" : "2"]), JSON(["3" : "4"]) ]) 

Или:

x["1"] = [ JSON(["1" : "2"]).object, JSON(["3" : "4"]).object ] 

Должен работать, по крайней мере для SwiftyJSON 2,3