- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 JSONEncoder 将四个不同的数组编码为 json 格式,但无法转换数组。所以,请帮帮我。我在 iOS 11 上使用 swift 4、xcode 9。
我的数组是:
var timeCart //dynamic data as string
var nameCart //dynamic data as string, ex. ["myNameOne", "myNameTwo", ...]
var quantityCart //dynamic data as Int, ex. [2, 3, 5, ...]
var priceCart //dynamic data as Int, ex. [82, 73, 65, ...]
我的结构是:
struct OrderDetailJSON: Encodable {
let allOrder: [AllOrder]
let TaxDetials: TaxDetail
struct AllOrder: Encodable {
let date_time: String
let item: String
let name: String
let price: String
}
struct TaxDetail: Encodable {
let tax_per: String
let tax_name: String
}
}
我试图在 TableView 内像这样编码
let orderDetailsJSON = OrderDetailJSON(allOrder: [.init(date_time: "\(quantityCart[indexPath.row])", item: "\(quantityCart[indexPath.row])", name: "\(nameCart[indexPath.row])", price: "\(priceCart[indexPath.row])")], TaxDetials: .init(tax_per: defaults.string(forKey: "STORE_TAX")!, tax_name: defaults.string(forKey: "STORE_TAX_NAME")!))
do {
let jsonData = try JSONEncoder().encode(orderDetailsJSON)
let jsonString = String(data: jsonData, encoding: .utf8)
print("order_details :" + jsonString!)
}catch{
}
我得到的输出是:
order_details: {
"TaxDetials": {
"tax_per": "5",
"tax_name": "CGST & SGST"
},
"allOrder": [
{
"date_time": "2",
"name": "Manchurian",
"item": "2",
"price": "87"
}
]
}order_details: {
"TaxDetials": {
"tax_per": "5",
"tax_name": "CGST & SGST"
},
"allOrder": [
{
"date_time": "3",
"name": "Paneer Tikka",
"item": "3",
"price": "150"
}
]
}order_details: {
"TaxDetials": {
"tax_per": "5",
"tax_name": "CGST & SGST"
},
"allOrder": [
{
"date_time": "2",
"name": "snacks",
"item": "2",
"price": "54"
}
]
}
我期望的输出是:
order_details: {
"TaxDetials": {
"tax_per": "5",
"tax_name": "CGST & SGST"
},
"allOrder": [
{
"date_time": "2",
"name": "Manchurian",
"item": "2",
"price": "87"
},
{
"date_time": "3",
"name": "Paneer Tikka",
"item": "3",
"price": "150"
},
{
"date_time": "2",
"name": "snacks",
"item": "2",
"price": "54"
}
]
}
最佳答案
您的结构声明没有任何问题(除了您应该遵守 Swift 命名约定,即变量名称采用小驼峰命名法 - taxPer
而不是 tax_per
等,并且您的属性名称未使用正确的复数/单数形式)。
问题是您正在为每个 TableView 单元格定义一个 OrderDetailJSON
实例,而您的 TaxDetails
似乎对于表中的所有单元格都应该相同,并且您实际上想要创建一个 OrderDetailJSON
实例,其 allOrder
数组属性为每个 TableView 单元格包含一个 AllOrder
实例。您需要将 allOrder
属性更改为可变才能使其正常工作。
class YourTableViewController: UITableViewController {
var orderDetails: OrderDetailJSON
...
// You might need to use a different tableView function depending on your exact needs
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
orderDetails.allOrder[indexPath.row] = AllOrder(date_time: "\(quantityCart[indexPath.row])", item: "\(quantityCart[indexPath.row])", name: "\(nameCart[indexPath.row])", price: "\(priceCart[indexPath.row])")
}
}
您需要确保使用正确的 TaxDetails
初始化 orderDetails
,并且向 allOrder
预分配相同数量的元素您将拥有的表格 View 单元格。您只需在所有单元格都填满信息后将 orderDetails
转换为 JSON,无需逐个单元格执行此操作。
关于ios - 如何使用 JSONEncoder 对嵌套数组进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50528053/
您好,我有多个 JSON 数据包,就像我在下面写的那样。 { "data" : { "lng" : 36.159999999999997, "lat" : 50.359999999
我需要一些有关扩展标准的帮助json.JSONEncoder在Python中。 我有这样的对象: temp = { "a": "test/string", "b": {
有没有办法配置 JSONEncoder 在将 Double(整数)转换为 JSON 时添加尾随小数点和零? 下面的代码说明了这个问题。 import Foundation struct NumberT
我试图将结构数组保存到 UserDefaults 中,但我无法弄清楚为什么 JsonEncoder 会返回空数据。我有符合 Codable 协议(protocol)的设置模型 struct MenuI
我正在尝试通过重写 default 方法,使用另一种模式使用 json.JSONEncoder 对 JSON 进行编码: class X(json.JSONEncoder): def defa
我正在为具有可能关联值的 enum 类型实现 Codable。由于这些对于每种情况都是唯一的,我认为我可以在编码期间不使用 key 输出它们,然后在解码时简单地查看我能得到什么以恢复正确的情况。 这是
我正在运行 Python 2.7,我正在尝试创建 JSONEncoder 的自定义 FloatEncoder 子类。我遵循了许多示例,例如 this,但似乎都不起作用。这是我的 FloatEncode
与所有 IEEE 7540 系统一样,Swift 中的数字如 4.7被视为类似 4.7000000000000002 的值.所以这并不奇怪: % swift Welcome to Apple Swif
我想知道函数 jsonEncode()来自 dart:convert图书馆是完全可以预测的。也就是说,将jsonEncode()总是对 Map 的键和值进行编码对象以相同的顺序? 最佳答案 答案是:视
我尝试使用 JSONEncoder 将四个不同的数组编码为 json 格式,但无法转换数组。所以,请帮帮我。我在 iOS 11 上使用 swift 4、xcode 9。 我的数组是: var time
这个问题在这里已经有了答案: Swift String escaping when serializing to JSON using Codable (5 个答案) 已关闭 3 年前。
例如我只想将这个示例数组转换成一个 JSON 对象 var test = [String : Any] () test["title"] = "title" test["description"] =
如何将通用结构发送到返回 JSON 的函数? 我正在尝试创建一个函数,它获取一个结构作为参数并返回一个 JSON 数据。我之所以这样做是因为我想避免重复,它将在多个地方和不同的结构中使用(即:用户、客
我有一个包含多个方法和属性的父类: class Animal { var var1: ... var var2: ... func func1() {} func func2(
想使用 JSONEncoder+Encodable 将对象编码成自定义结构。 struct Foo: Encodable { var name: String? var bars: [Ba
我遇到了以下错误 我不知道为什么会出现这个问题,我该如何解决?请帮忙! 注意:我使用的是 Xcode 版本 9.3.1 和 Swift4,我曾尝试使用 JSONCodable.JSONEncoder
我正在实现我自己的 JSONEncoder 来完全按照我的需要处理不同的类。不幸的是,我的自定义编码器返回格式有点错误的字符串。它们被引号包围,某些字符(引号)被转义。 请使用以下代码重现该行为: i
我无法将 collections.namedtuple 转储为正确的 JSON。 首先,考虑 official使用自定义 JSON 序列化程序的示例: import json class Comple
我在 Python 2.7.10 中工作,我有一些二进制数据: binary_data = b'\x01\x03\x00\x00 \xe6\x10\x00\x00\x01\x00\x00\x00\x0
var test = [String : String] () test["title"] = "title" test["description"] = "description" let enco
我是一名优秀的程序员,十分优秀!