将字典数组转换为对象数组

时间:2018-10-23 07:22:06

标签: ios swift

我有一个这样的字符串:

[{"LocationsItems":[{"ItemId":4,"LocationId":3,"Qty":34},{"ItemId":19,"LocationId":3,"Qty":55}]}];

我需要将其转换为对象数组,我尝试过:

let data = convertedData.data(using: .utf8)!
        do {
            if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [Dictionary<String,Any>]
            {
                print(jsonArray)

            } else {
                print("bad json")
            }
        } catch let error as NSError {
            print(error)
        }
    }

并返回this,它是字典数组:

[["LocationsItems": <__NSArrayI 0x600003a1c100>(
{
    ItemId = 4;
    LocationId = 3;
    Qty = 34;
},
{
    ItemId = 19;
    LocationId = 3;
    Qty = 55;
}
)
]]

我如何从中提取对象? 谢谢

1 个答案:

答案 0 :(得分:2)

您可以创建DECLARE @data nvarchar(max)='1422, 1323, 4343, 2343,4515,7898,4784,4775,4115' DECLARE @Tempdata AS TABLE (data nvarchar(max)) INSERT INTO @Tempdata SELECT @data SELECT LTRIM(Split.a.value('.','nvarchar(100)')) AS data FROM( SELECT CAST('<S>'+ REPLACE(data,',','</S><S>')+'</S>' AS XML) AS data FROM @Tempdata ) AS A CROSS APPLY data.nodes('S') AS Split (a) 的结构。

LocationItem

或者,您可以使用struct LocationItem { var itemId: Int? var locationId: Int? var qty: Int? } var innerDictionary = jsonArray[0] as? [String: Any] var arrayOfDict = innerDictionary["LocationsItems"] as? [[String: Any]] var locationsItems = arrayOfDict.map { LocationItem(itemId: $0["ItemId"], locationId: $0["LocationId"], qty: $0["Qty"]) }

Codable