如何在JSON中插入对象数组?

时间:2016-01-23 01:48:03

标签: json swift ios9 swifty-json

我在Swift中创建了一个对象数组,它具有以下结构:

var myCart:[FoodItem] = []

var dump:

    ▿ 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. 由于某种原因,即使我在JSON声明中将它放在最后位置,“car”也被放置在第二位置。
  2. 第二个问题是我不知道如何在我的JSON中放置我的对象数组来获得这样的东西:

        {"idUser": (int),
         "total_loyalty_points": (double),
         "total_price":(double),
         "car":[
          {
           "id": (string),
           "name": (string),
           "cant": (int)
          }
         ]
        }
    
  3. 其中“car”是该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)
                }
    

    它不起作用的原因是这不会在Cart中创建一个数组,它只会覆盖JSON

    感谢。

1 个答案:

答案 0 :(得分:1)

对于第一个问题,没有解决方案,因为地图或字典不维护订单。

第二个问题是因为你将json [" car"]分配给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)