问题标签 [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.

0 投票
1 回答
10754 浏览

swift - 用于字符串资源格式的自定义 Swift 编码器/解码器

我一直在玩弄Codable并从文件中读取和写入 JSON。现在我想写一个Coder可以读写iOS.strings文件的自定义。谁能帮我这个?我找到了协议EncoderDecoder,但我不知道我应该在这里实现什么:

0 投票
1 回答
454 浏览

json - 使用 swift 4 创建嵌套 json 的最优雅方法是什么?

用唯一一个参数从这种结构创建 JSON 的最优雅方法是什么

进入这个 JSON 字符串?

{"params": {"value": "{value}"}}

我不想创建嵌套结构。

0 投票
2 回答
3786 浏览

inheritance - 可编码类的继承

我正在使用 Swift 4 和 Xcode 9.2 编写程序。我在编写可编码类(确切地说是类,而不是结构)时遇到了困难。当我试图从另一个类继承一个类时,JSONEncoder 不会从子类(子类)中获取所有属性。请看这个:

它会打印这个:{"a":"a","b":"b"}

但我需要这个:{"a":"a","b":"b","c":"c"}

看起来c阶级的财产AdditionalData只是不知何故丢失了。

所以问题是:如果我有使用协议 Encodable 签名的类,如何正确地制作子类(此类的子类,继承)类?

我将感谢任何帮助或建议。

0 投票
11 回答
30952 浏览

ios - 如何在 Codable 类型中使用 Any

我目前正在Codable我的项目中使用类型并面临一个问题。

id在上面的代码中可以是 aStringInt. 这就是id类型的原因Any

我知道那Any不是Codable

我需要知道的是如何使它工作。

0 投票
2 回答
394 浏览

swift - 在 Swift 字典中存储 Encodables

我希望将模型对象存储在 Dictionary 中,并希望将整个字典序列JSONEncoder化为数据,然后将其序列化为字符串并保存。

这个想法是使用 Swift 4 开箱即用Encodable,以确保我添加到字典中的任何内容都将被序列化,其中可以包括原语和自定义对象(它们本身将符合Encodable)。

挑战是我应该将字典声明为什么类型:

  • 如果我使用[String: Any],它将不知道如何编码Any,并且如果我必须将其转换为实际的具体类型,这有点违背泛型的目的
  • 如果我使用[String: Encodable],它会在运行时崩溃,说 Encodable 不符合自身,这是可以理解的,因为它需要一个具体的类型

为了解决这个问题,我想到了创建一个包装器:即具有关联类型的协议具有泛型类型值的结构:

但是问题仍然存在,在声明上述字典的类型时,我仍然必须提供具体类型..

“X”应该在这里,或者,实现这一目标的正确方法是什么?我错过了什么?

0 投票
2 回答
11444 浏览

swift - 如何在 Swift 4 中使用 JSONEncoder 对字典进行编码

我想用 JSONEncoder 将 Dictionary 编码为 json。它看起来像一个请求,接收一个字典作为参数并将其编码为 json 作为 http 正文。代码如下所示:

但是这段代码出现错误

致命错误:Dictionary<String, Encodable> 不符合 Encodable,因为 Encodable 不符合自身。您必须使用具体类型进行编码或解码。

我怎样才能使它可编码?

0 投票
2 回答
3083 浏览

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 的方法之前,我使用了以下代码段。

0 投票
1 回答
219 浏览

swift - 使用 jSONEncoder 的自定义结构

想要使用 JSONEncoder+Encodable 将对象编码为自定义结构。

默认的编码方法foo给出:

输出:

在自定义输出中,我想使用 property 的值name作为键,而 rest 的值作为提到的键的值。这同样适用于嵌套对象。所以我希望输出是:

问题是 Encodable/JSONEncoder 是否支持这一点。现在我只处理第一个输出字典并通过迭代键来重构它。

0 投票
1 回答
261 浏览

swift - 可编码结构中的可编码 var

我想创建一个结构,该结构将包含可编码项目的字典,并且本身是可编码的。这是因为我不知道确切的数据结构,它取决于连接的数据库。我试图做这样的事情:

但它给出了一个错误,即 UserInfo 不符合 Encodable。我认为它应该,因为它只会包含可编码的项目。这可以以某种方式轻松实现吗?

0 投票
1 回答
1551 浏览

json - 如何将图像从 JSON 解析为 swift4

我正在尝试快速从我的数据库中提取图像。我可以检索价格、视频和 p_name,但不能检索图像。我想UIImageView用数据库中的图像更新 updateImage,但出现两个错误。

错误一说:

类型“ViewController.Class”不符合协议“Encodable”

错误二说:

类型“ViewController.Class”不符合协议“Dec”

有什么好的解决方法?

这是JSON:

还有快速代码: