我在从 Swift3
中的结构数组创建 JSON
时遇到问题。我在 Stack Overflow
中搜索,没有任何帮助(这里是 screenshot)。我有一个像这样的 struct
:
public struct ProductObject {
var prodID: String
var prodName: String
var prodPrice: String
var imageURL: String
var qty: Int
var stock: String
var weight: String
init(prodID: String, prodName: String, prodPrice: String, imageURL: String, qty: Int, stock: String, weight: String){
self.prodID = prodID
self.prodName = prodName
self.prodPrice = prodPrice
self.imageURL = imageURL
self.qty = qty
self.stock = stock
self.weight = weight
}
}
以及该结构的数组:
private var productsArray = [ProductObject]()
当数组不为空时,然后我尝试在另一个类中打印它,它在调试器中显示如下:
[app.cartclass.ProductObject(prodID: "2", prodName: "produk 2", prodPrice: "IDR 1000000", imageURL: "someURL", qty: 1, stock: "11", weight: "200")]
该数组不是有效的 JSON 对象
。如何使它成为有效的 JSON
对象?我想知道“app.cartclass.ProductObject”这部分是否是一个问题,是否要使其成为有效的 JSON 对象
?
编辑:
下面是我如何序列化为 JSON
:
var products = [String:Any]()
for j in 0 ..< cart.numberOfItemsInCart() {
products=["\(j)":cart.getAllProduct(atIndex: j)]
}
if let valid = JSONSerialization.isValidJSONObject(products) {
do {
let jsonproducts = try JSONSerialization.data(withJSONObject: products, options: .prettyPrinted) as! [String:Any]
//print(jsonproducts)
} catch let error as NSError {
print(error)
}
} else {
print("it is not a valid JSON object");
}
最佳答案
如果您想从自定义对象生成 JSON,那么首先您需要将您的自定义对象转换为 Dictionary
,因此请在您的 ProductObject
结构中创建一个如下所示的函数。
func convertToDictionary() -> [String : Any] {
let dic: [String: Any] = ["prodID":self.prodID, "prodName":self.prodName, "prodPrice":self.prodPrice, "imageURL":self.imageURL, "qty":qty, "stock":stock, "weight":weight]
return dic
}
现在使用此函数从自定义对象数组 ProductObject
生成字典数组。
private var productsArray = [ProductObject]()
let dicArray = productsArray.map { $0.convertToDictionary() }
这里的dicArray
是由[[String:Any]]
类型组成的,现在可以使用JSONSerialization
来生成JSON
来自此 dicArray
的字符串。
if let data = try? JSONSerialization.data(withJSONObject: dicArray, options: .prettyPrinted) {
let str = String(bytes: data, encoding: .utf8)
print(str)
}
关于arrays - 如何从 Swift 3 中的结构数组生成 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40989483/