我有一个问题JSON
要从中的结构数组Swift3
。我搜索了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
。
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)
}
问题内容: 由于数组中的equals函数仅检查实例,因此它不适用于Set。因此,我想知道如何在Java中制作一组数组? 一种可能的方法是将每个数组放在一个对象中,并为该类实现equals函数,但这会降低性能吗? 问题答案: 由于ArrayList类已经包装了一个数组,因此您可以扩展它并覆盖and 方法。这是一个示例: 更新: 您甚至可以重写它以用于一般用途,只需将代码更改为:
问题内容: 我想知道Go中的“ struct {}”和“ struct {} {}”是什么意思?示例如下: 要么 问题答案: 是Go中的关键字。它用于定义结构类型,结构类型是命名元素的序列。 例如: 的是一个具有零个元素类型。通常在不存储任何信息时使用。它具有大小为0的优点,因此通常不需要内存来存储type值。 另一方面是复合文字,它构造一个类型的值。复合文字构造用于类型的值,例如结构,数组,映射
问题内容: 我想创建一个布尔数组,该数组的大小将为用户输入。例如-用户可能会输入一个大数字,例如1000000000000; 所以然后我必须创建一个大小为1000000000000的布尔数组。我面临的问题是,我无法将输入存储为int,因为它不能容纳这么大的数字- 因此我无法创建该数组。Double是一个我可以将输入数字存储为double,但是我不知道如何创建double大小的数组。这就是- 如果目
问题内容: 已在Swift3中弃用。任何人都可以提供一些示例来说明尝试打开URL时替换的工作方式吗? 问题答案: 所有你需要的是:
我想提取一些值并以JSON格式存储在数组中。 我有我的代码在karate-config.js文件中,因为我调用的API只需要调用一次,结果需要存储在数组中,以便以后可以在其他功能中使用。 结果 预期结果
问题内容: 是2D数组。我想要一个新变量,其值与数组相同。此外, 使用Y进行的任何其他操作都不应影响X的值。 在我看来使用起来很自然。但是它不适用于数组。如果我这样做,然后更改y,x也会更改。我发现问题可以这样解决: 但是它不适用于2D阵列。例如: 返回。如果我替换为,这也无济于事。 有人知道什么是正确且简单的方法吗? 问题答案: 尝试这个: 我不确定,也许就足够了。