问题标签 [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.
arrays - JSONDecoder - 解码每个元素的执行方法
我正在使用 JSONDecoder 将 JSON 解码为 MyModel 数组:
一切正常,我得到了我的数组,但我想在每次元素完成解码时为模型数组的每个元素执行一个方法。现在我正在这样做:
它可以工作,但不是最优的,有没有办法在每次解码器完成解码数组的一个元素时执行一个方法?例如完成?
谢谢
ios - JSON在swift中仅解析特定键
我正在使用 Swift 编程语言开发 iOS App
我有以下 JSON 格式的数据:
上面的代码具有某些键值对,我只对在下面提到的结构对象中获取“alarmTransactions”数组感兴趣。
下面的代码肯定会失败,因为我的 json 有许多我不感兴趣的其他关键值细节。
有人可以建议我如何将我的“alarmTransactions”解析为 [AlarmHistory] 对象吗?
ios - JSONDecoder 总是返回“No value associated with key CodingKeys”
我正在使用以下解码结构来解码来自服务器的数据,但它总是返回“没有与键 CodingKeys 关联的值”。请看下面的代码
服务器的响应是
我得到的错误是 DecodingError
这是来自服务器的完整数据。
解码器代码:
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属性。
任何人都可以提供解决方案或某种解决方法吗?谢谢!
json - Swift - JSONEncoder - 在超类中分别编码日期字段
我对 swift 非常陌生,我正在尝试找到一种方法来为扩展 Codable 的类使用默认编码并为某些字段添加单独的数据。
例如,我有一个类 Contact,它扩展了 Codable,有很多字段,我想对日期进行不同于默认的编码(默认情况下 JSONEcoder 将日期作为时间戳,但我想使用不同的格式)为简单起见,假设我的类是:
对于自定义编码,我使用了这个链接:Using Decodable in Swift 4 with Inheritance
问题是我不想单独编码每个字段,因为默认编码会这样做。我只想将某些值添加到编码的 json 中。
我还发现了这个关于动态键的链接,但我不知道如何准确地使用它:https ://gist.github.com/samwize/a82f29a1fb34091cd61fc06934568f82
这可以做到吗?
json - Swift - 将类型动态传递给 JSONDecoder
我正在尝试使用通用嵌套对象从 json 对象解码,为此我想在解码时动态传递类的类型。
例如,我的类是扩展 ObjectModel(和:Codable)的 EContactModel 和 ENotificationModel。ENotificationModel 可以包含嵌套的 ObjectModel(可以是联系人、通知或其他对象模型)。
我有一个这样的类型字典:
我在 ENotificationModel 中的解码初始化方法如下所示:
我也尝试传递 type(of: anObjectInstanceFromADictionary) 并且仍然无法正常工作,但是如果我传递 type(of: EContactModel()) 它可以工作。我无法理解这一点,因为两个对象都是相同的(即 EContactModel 的实例)
有解决方案吗?
json - 使用 Swift 解码器从 JSON 数组中提取属性
我有一个使用此调用创建的 JSON 数组:
我正在尝试从数组中的 JSON 对象中获取元素以使用以下代码显示它们:
代码编译但是当我运行它时,我在输出中得到这个错误:
无法将类型“__NSDictionaryM”(0x1063c34f8)的值转换为“NSData”(0x1063c1090)。2018-08-09 09:41:02.666713-0500 TruckMeterLogScanner[14259:1223764] 无法将“__NSDictionaryM”(0x1063c34f8)类型的值转换为“NSData”(0x1063c1090)。
我仍在调查,但任何提示都会有所帮助。
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
但没有按预期进行。我究竟做错了什么?
提前致谢。
php - JSON在解码时只返回第一个字符?
我的 JSON:
我的PHP:
它{
总是返回,事实上即使我把$json['safasfsaf']
它仍然会返回{
有什么问题,JSON是有效的?
ios - 如何处理 JSONDecoder 中的空日期字符串
我的 json 中的日期参数可以为空(“”)。如何在 JSONDecoder 中处理它?
自定义的 dateDecodingStrategy 只能处理不同的格式,但不能处理空值。(格式化程序返回的日期不能是可选的)。
当日期有一个值时,它将完美地工作。但是当日期为“”时,它会崩溃。