如何将我的对象数组插入 JSON?

How can I insert my array of Objects in a JSON?

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

var myCart:[FoodItem] = []

变量转储:

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

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

其中 "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)
            }

它不起作用的原因是这不会在购物车中创建数组,它只会覆盖 JSON

谢谢。

第一个问题没有解决方案,因为 Map 或 Dictionary 不维护顺序。

第二个问题是因为您将 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)