2016-01-23 43 views
1

我創建的對象的斯威夫特數組,它具有以下結構:如何在JSON中插入我的對象數組?

var myCart:[FoodItem] = [] 

VAR轉儲:

▿ 3 elements 
    ▿ [0]: TablePinAdolfoTesting.FoodItem #0 
    - id: 5 
    - name: Taco 
    - cant: 2 
    ▿ [1]: TablePinAdolfoTesting.FoodItem #1 
    - id: 6 
    - name: Burrito 
    - cant: 1 
    ▿ [2]: TablePinAdolfoTesting.FoodItem #2 
    - id: 4 
    - name: Enchiladas 
    - cant: 3 

我用Alamofire從我的API獲得上述目標,但現在,轉換後他們一點點,我想將其插入到我像這樣創造了一個新的JSON:

var json: JSON = ["idUser": idUser, "total_loyalty_points": totalLP, "total_price": totalPrice, "car": []] 

印製的json:

{ 
     "total_price" : 50000, 
     "car" : [ 
     ], 
     "idUser" : 58, 
     "total_loyalty_points" : 5000 
    } 

我有2個問題,這... ...

  1. 由於某種原因,「汽車」被放置在第2位,即使我的JSON聲明中把它放在最後。
  2. 的第二個問題是,我不知道怎麼把我的對象數組是JSON內取得這樣的事情:

    {"idUser": (int), 
        "total_loyalty_points": (double), 
        "total_price":(double), 
        "car":[ 
         { 
         "id": (string), 
         "name": (string), 
         "cant": (int) 
         } 
        ] 
        } 
    

當「車」內的對象數組那個JSON。如果可能的話,我寧願使用SwiftyJSON來保持一致性,但這不是必需的。我試過,但不起作用

一件事是以下

for object in cart.myCart{ 
       var name = [String: String]() 
       name["id"] = object.id 
       name["name"] = object.name 
       json["car"] = JSON(name) 
       json["car"]["cant"] = JSON(object.cant) 
      } 

它不工作的原因是,這會不會造成車的陣列,它只會覆蓋JSON

謝謝。

回答

1

對於第一個問題,沒有解決方案,因爲地圖或字典不能維護訂單。

第二個問題是因爲您正在將json [「car」]分配給JSON,而JSON是對象而不是對象數組。修改後的代碼是:

var cars = [[String: String]]() 
    for object in cart.myCart{ 
     var name = [String: String]() 
     name["id"] = object.id 
     name["name"] = object.name 
     name["cant"] = object.cant 
     cars.append(name) 
    } 
    json["car"] = JSON(cars) 
+0

這是非常多的...我唯一需要改變的是因爲'name [「cant」]'是一個int,我改變了[[String:String]] ()'爲'String:AnyObject]()' 謝謝 –

相關問題