我有一个这样的字符串:
[{"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;
}
)
]]
我如何从中提取对象? 谢谢
答案 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