因此,我正在尝试使用swiftyjson解析这个json文件中的嵌入值,但我不知道如何从json中获取嵌入的内容。
到目前为止,这就是我所拥有的,它用于获取json的上层,但不适用于嵌套项。在这个文件中,我需要的主要内容是条目中名称和创建值的items部分。
if let data = json.dataUsingEncoding(NSUTF8StringEncoding) {
let newJson = JSON(data: data)
myBarcode = newJson["barcode_id"].stringValue
myName = newJson["name"].stringValue
myTotalPointsEarned = newJson["total_points_earned"].stringValue
myPointsEarned = newJson["points_available_to_spend"].stringValue
myRank = newJson["rank"].stringValue
myId = newJson["id"].stringValue
//new json arrary to get the items and dates
var myHistory = newJson["order_history"].arrayValue
print("\n My Hist \n" , myHistory)
//FAIL
//var myItems = newJson["items"].stringValue
//print("\n My Items \n" , myItems)
}这就是我要解析的json文件。
{
"id" : "xxx",
"name" : "xfgsfsdfs",
"total_points_earned" : null,
"points_available_to_spend" : null,
"rank" : null,
"barcode_id" : "C-00000252",
"order_history" : [ {
"items" : [ {
"id" : 284,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 26, 5, 27, 53 ],
"sku" : "10-10-08-050",
"name" : "Halloween stuff",
"description" : "",
"quantity" : 1.0,
"price" : 2000.0,
"total" : 2000.0,
"tax" : null,
"discount" : null
}, {
"id" : 285,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 26, 5, 27, 53 ],
"sku" : "10-22-12-247",
"name" : "More Xmas stuff",
"description" : "",
"quantity" : 1.0,
"price" : 2300.0,
"total" : 2300.0,
"tax" : null,
"discount" : null
}, {
"id" : 286,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 26, 5, 27, 53 ],
"sku" : "10-22-12-249",
"name" : "Xmas stuff",
"description" : "",
"quantity" : 1.0,
"price" : 3700.0,
"total" : 3700.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 288,
"created" : [ 2016, 5, 26, 5, 29, 51 ],
"updated" : [ 2016, 5, 26, 5, 29, 51 ],
"sku" : "JJ-02-00-042",
"name" : "A sample product name",
"description" : "",
"quantity" : 1.0,
"price" : 3000.0,
"total" : 3000.0,
"tax" : null,
"discount" : null
} ]
}
]
}谢谢你在这方面的帮助
发布于 2016-05-26 08:19:54
MNM,
您可以将项访问为
var myItems = newJson["order_history"][0]["items"]绝对没有必要为每个键创建单独的json。
发布于 2016-05-26 08:31:09
您正在使用SwiftyJSON,所以请使用它的特性!
例如,使用键路径访问值:
var id = newJson["order_history",0,"items",0,"id"]另外,经典的SwiftyJSON方法(类似于本机Swift,但不必打开值):
var id = newJson["order_history"][0]["items"][0]["id"]发布于 2016-05-26 08:27:43
根据文档的说法。如果值为JSON字符串类型,.stringValue将返回一个String。您不能使用它“将其从当前的任何类型转换为String”。因此,如果它是JSON数组,.stringValue将返回一个""。
如果要获取值的原始(未解析) JSON字符串,请使用.rawString()。
在你的例子中,你可以做的就是:
for item in newJson["items"].arrayValue {
// do something with the item
}https://stackoverflow.com/questions/37454757
复制相似问题