[英]How to make an array using dummy values from Struct Modal class in Swift iOS
[英]How to Make JSON from Array of Struct in Swift 3?
我有問題從Swift3
的struct數組生成JSON
。 我在Stack Overflow
搜索,沒有任何幫助(這里是截圖 )。 我有這樣的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 object
。 如何使其成為有效的JSON
對象? 我想知道這部分“app.cartclass.ProductObject”是否是一個問題,使它成為一個有效的JSON object
?
編輯:
這是我如何序列化為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
Array生成字典數組。
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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.