问题标签 [jsondecoder]

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 回答
66 浏览

arrays - JSONDecoder - 解码每个元素的执行方法

我正在使用 JSONDecoder 将 JSON 解码为 MyModel 数组:

一切正常,我得到了我的数组,但我想在每次元素完成解码时为模型数组的每个元素执行一个方法。现在我正在这样做:

它可以工作,但不是最优的,有没有办法在每次解码器完成解码数组的一个元素时执行一个方法?例如完成?

谢谢

0 投票
1 回答
556 浏览

ios - JSON在swift中仅解析特定键

我正在使用 Swift 编程语言开发 iOS App
我有以下 JSON 格式的数据:

上面的代码具有某些键值对,我只对在下面提到的结构对象中获取“alarmTransactions”数组感兴趣。

下面的代码肯定会失败,因为我的 json 有许多我不感兴趣的其他关键值细节。

有人可以建议我如何将我的“alarmTransactions”解析为 [AlarmHistory] ​​对象吗?

0 投票
1 回答
5570 浏览

ios - JSONDecoder 总是返回“No value associated with key CodingKeys”

我正在使用以下解码结构来解码来自服务器的数据,但它总是返回“没有与键 CodingKeys 关联的值”。请看下面的代码

服务器的响应是

我得到的错误是 DecodingError

这是来自服务器的完整数据。

解码器代码:

0 投票
1 回答
1278 浏览

json - Swift - JSONDecoder - 解码通用嵌套类

我对 Swift 很陌生,我正在尝试创建一个类树来为我的数据建模。我想使用 JSONEncoder 和 JSONDecoder 来发送和接收对象。我在解码另一个对象(嵌套)中的泛型类时遇到问题,因为在 init(from: decoder) 方法中,我无法访问可以帮助我的其他属性。

在我的代码中:

NestedSecondObject 扩展了 NestedObjects,后者扩展了 Codable - NestedObject 可以通过 NesteThirtObject 等进行扩展...

Contact 扩展了 Object1,后者扩展了 Codable;Contact 包含一个 NestedObject 类型(可以是运行时 NestedObject 的任何子类)

因为 JSONEncoder 和 JSONDecoder 默认不支持继承,所以我重写了方法“encode”和 init(from: decoder),如下所述:Using Decodable in Swift 4 with Inheritance

我的代码是:

解码是:

所以,基本上,当我向服务器发出请求时,我知道我收到了什么类型(假设我请求 NestedSecondObject),但是我如何将它传递给方法“init(来自解码器:解码器)”?

我尝试扩展 JSONDecoder 类并添加一个简单的属性,如下所示:

但是在所需的init(来自解码器:解码器)方法中,解码器的类型不是EJSONDecoder,是_JSONDecoder,所以我无法访问decoder.classType属性。

任何人都可以提供解决方案或某种解决方法吗?谢谢!

0 投票
1 回答
1115 浏览

json - Swift - JSONEncoder - 在超类中分别编码日期字段

我对 swift 非常陌生,我正在尝试找到一种方法来为扩展 Codable 的类使用默认编码并为某些字段添加单独的数据。

例如,我有一个类 Contact,它扩展了 Codable,有很多字段,我想对日期进行不同于默认的编码(默认情况下 JSONEcoder 将日期作为时间戳,但我想使用不同的格式)为简单起见,假设我的类是:

对于自定义编码,我使用了这个链接:Using Decodable in Swift 4 with Inheritance

问题是我不想单独编码每个字段,因为默认编码会这样做。我只想将某些值添加到编码的 json 中。

我还发现了这个关于动态键的链接,但我不知道如何准确地使用它:https ://gist.github.com/samwize/a82f29a1fb34091cd61fc06934568f82

这可以做到吗?

0 投票
1 回答
398 浏览

json - Swift - 将类型动态传递给 JSONDecoder

我正在尝试使用通用嵌套对象从 json 对象解码,为此我想在解码时动态传递类的类型。

例如,我的类是扩展 ObjectModel(和:Codable)的 EContactModel 和 ENotificationModel。ENotificationModel 可以包含嵌套的 ObjectModel(可以是联系人、通知或其他对象模型)。

我有一个这样的类型字典:

我在 ENotificationModel 中的解码初始化方法如下所示:

我也尝试传递 type(of: anObjectInstanceFromADictionary) 并且仍然无法正常工作,但是如果我传递 type(of: EContactModel()) 它可以工作。我无法理解这一点,因为两个对象都是相同的(即 EContactModel 的实例)

有解决方案吗?

0 投票
2 回答
166 浏览

json - 使用 Swift 解码器从 JSON 数组中提取属性

我有一个使用此调用创建的 JSON 数组:

我正在尝试从数组中的 JSON 对象中获取元素以使用以下代码显示它们:

代码编译但是当我运行它时,我在输出中得到这个错误:

无法将类型“__NSDictionaryM”(0x1063c34f8)的值转换为“NSData”(0x1063c1090)。2018-08-09 09:41:02.666713-0500 TruckMeterLogScanner[14259:1223764] 无法将“__NSDictionaryM”(0x1063c34f8)类型的值转换为“NSData”(0x1063c1090)。

我仍在调查,但任何提示都会有所帮助。

0 投票
2 回答
749 浏览

json - JSON解码不能按预期工作 swift 4

如果我想解码我的 JSON,就会发生一些奇怪的事情。

这是结构

这里的功能

如果返回的 JSON 是 {"user":"test","message":"Hello welcome","status":"admin","latitude":0,"longitude":0}.

它的回归chatMessage(user: "test", message: "Hello welcome", status: "admin", latitude: 0.0, longitude: 0.0)

但如果有更多消息,例如[{"user":"user1","message":"Hello welcome","status":"admin","latitude":0,"longitude":0},{"user":"user2","message":"Hello welcome","status":"admin","latitude":0,"longitude":0}]我无法让它工作。它的回归typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))

我试过了,chatMessages.self但没有按预期进行。我究竟做错了什么?

提前致谢。

0 投票
3 回答
204 浏览

php - JSON在解码时只返回第一个字符?

我的 JSON:

我的PHP:

{总是返回,事实上即使我把$json['safasfsaf']它仍然会返回{

有什么问题,JSON是有效的?

0 投票
1 回答
506 浏览

ios - 如何处理 JSONDecoder 中的空日期字符串

我的 json 中的日期参数可以为空(“”)。如何在 JSONDecoder 中处理它?

自定义的 dateDecodingStrategy 只能处理不同的格式,但不能处理空值。(格式化程序返回的日期不能是可选的)。

当日期有一个值时,它将完美地工作。但是当日期为“”时,它会崩溃。