【问题标题】:How can I insert my array of Objects in a JSON?如何在 JSON 中插入我的对象数组?
【发布时间】:2016-01-23 01:48:02
【问题描述】:

我在 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. 出于某种原因,“汽车”被置于第二位,即使我在 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

谢谢。

【问题讨论】:

    标签: json swift ios9 swifty-json


    【解决方案1】:

    对于第一个问题没有解决方案,因为 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)
    

    【讨论】:

    • 差不多就是这样......我唯一需要改变的是因为name["cant"]是一个int,我将[[String: String]]()改为String: AnyObject]()谢谢
    猜你喜欢
    • 2020-12-11
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多