问题标签 [encodable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 用于字符串资源格式的自定义 Swift 编码器/解码器
我一直在玩弄Codable
并从文件中读取和写入 JSON。现在我想写一个Coder
可以读写iOS.strings
文件的自定义。谁能帮我这个?我找到了协议Encoder
和Decoder
,但我不知道我应该在这里实现什么:
json - 使用 swift 4 创建嵌套 json 的最优雅方法是什么?
用唯一一个参数从这种结构创建 JSON 的最优雅方法是什么
进入这个 JSON 字符串?
{"params": {"value": "{value}"}}
我不想创建嵌套结构。
inheritance - 可编码类的继承
我正在使用 Swift 4 和 Xcode 9.2 编写程序。我在编写可编码类(确切地说是类,而不是结构)时遇到了困难。当我试图从另一个类继承一个类时,JSONEncoder 不会从子类(子类)中获取所有属性。请看这个:
它会打印这个:{"a":"a","b":"b"}
但我需要这个:{"a":"a","b":"b","c":"c"}
看起来c
阶级的财产AdditionalData
只是不知何故丢失了。
所以问题是:如果我有使用协议 Encodable 签名的类,如何正确地制作子类(此类的子类,继承)类?
我将感谢任何帮助或建议。
ios - 如何在 Codable 类型中使用 Any
我目前正在Codable
我的项目中使用类型并面临一个问题。
id
在上面的代码中可以是 aString
或Int
. 这就是id
类型的原因Any
。
我知道那Any
不是Codable
。
我需要知道的是如何使它工作。
swift - 在 Swift 字典中存储 Encodables
我希望将模型对象存储在 Dictionary 中,并希望将整个字典序列JSONEncoder
化为数据,然后将其序列化为字符串并保存。
这个想法是使用 Swift 4 开箱即用Encodable
,以确保我添加到字典中的任何内容都将被序列化,其中可以包括原语和自定义对象(它们本身将符合Encodable
)。
挑战是我应该将字典声明为什么类型:
- 如果我使用
[String: Any]
,它将不知道如何编码Any
,并且如果我必须将其转换为实际的具体类型,这有点违背泛型的目的 - 如果我使用
[String: Encodable]
,它会在运行时崩溃,说 Encodable 不符合自身,这是可以理解的,因为它需要一个具体的类型
为了解决这个问题,我想到了创建一个包装器:即具有关联类型的协议或具有泛型类型值的结构:
但是问题仍然存在,在声明上述字典的类型时,我仍然必须提供具体类型..
“X”应该在这里,或者,实现这一目标的正确方法是什么?我错过了什么?
swift - 如何在 Swift 4 中使用 JSONEncoder 对字典进行编码
我想用 JSONEncoder 将 Dictionary 编码为 json。它看起来像一个请求,接收一个字典作为参数并将其编码为 json 作为 http 正文。代码如下所示:
但是这段代码出现错误
致命错误:Dictionary<String, Encodable> 不符合 Encodable,因为 Encodable 不符合自身。您必须使用具体类型进行编码或解码。
我怎样才能使它可编码?
swift - JSONEncoder 的 dateEncodingStrategy 不起作用
我正在尝试使用 Swift 4 的 Encodable+JSONEncoder 将结构序列化为字符串。该对象可以保存异构值,如 String、Array、Date、Int 等。
除日期外,使用的方法工作正常。JSONEncoder 的dateEncodingStrategy
属性没有任何作用。
这是重现 Playground 中行为的片段:
输出:
对于 bar3 对象:我期待类似的东西"{"key":"bar3","value":"Thurs, 3 Jan 1991"}\n"
,但它以默认的 .deferToDate 策略格式返回日期。
##编辑1##
所以我在 XCode 9 中运行了相同的代码,它给出了预期的输出,即正确地将日期格式化为字符串。我认为 9.2 对 Swift 4 进行了小幅升级,这打破了这个特性。不知道下一步该怎么做。
##编辑2##
作为临时补救措施,在使用闭包更改为@Hamish 的方法之前,我使用了以下代码段。
swift - 使用 jSONEncoder 的自定义结构
想要使用 JSONEncoder+Encodable 将对象编码为自定义结构。
默认的编码方法foo
给出:
输出:
在自定义输出中,我想使用 property 的值name
作为键,而 rest 的值作为提到的键的值。这同样适用于嵌套对象。所以我希望输出是:
问题是 Encodable/JSONEncoder 是否支持这一点。现在我只处理第一个输出字典并通过迭代键来重构它。
swift - 可编码结构中的可编码 var
我想创建一个结构,该结构将包含可编码项目的字典,并且本身是可编码的。这是因为我不知道确切的数据结构,它取决于连接的数据库。我试图做这样的事情:
但它给出了一个错误,即 UserInfo 不符合 Encodable。我认为它应该,因为它只会包含可编码的项目。这可以以某种方式轻松实现吗?
json - 如何将图像从 JSON 解析为 swift4
我正在尝试快速从我的数据库中提取图像。我可以检索价格、视频和 p_name,但不能检索图像。我想UIImageView
用数据库中的图像更新 updateImage,但出现两个错误。
错误一说:
类型“ViewController.Class”不符合协议“Encodable”
错误二说:
类型“ViewController.Class”不符合协议“Dec”
有什么好的解决方法?
这是JSON:
还有快速代码: