我是一个非常新的开发人员(这是我的第一个开发工作),构建一个用于创建/处理订单的Swift / iOS应用程序,服务器正在向我发送一个带有我查找的每个产品的JSON中的ObjectID()对象 . 经过一些研究,似乎这是一个MongoDB对象 .
编码我的API路径的绅士希望我为服务器发送给我的每个产品获取该对象,因此我可以将任何包含该产品的订单发送回服务器 . 他说这将使他在处理新订单时更容易访问产品 .
到目前为止,我在解码服务器发送给我的JSON方面没有遇到任何问题,因为它的格式如String,Int,Float等,或者只是另一个JSON对象需要一个新的Codable结构,其中包含更多相同的 .
在为ObjectID创建Codable结构时,我不知道要告诉它期望的键/值类型(属性/值类型,您想要使用的任何术语) . 或者,如果这是正确的方式去做它 .
这就是我现在所拥有的:
import Foundation
struct ProductData: Codable {
let _id : ObjectId
let productId : String
let description : String
let ...
}
上面出现的ObjectId类型是我尚未构建的自定义Codable结构,因为我不确定如何 . 我想它应该看起来像这样:
import Foundation
struct ObjectId : Codable {
let someVariableName : SomeCodableType
let ...
}
我不知道它是否被表示为字符串,但我感觉如果我在我的产品Codable结构中尝试类似 let _id:String
的东西,它会想象得到它 . [245590] .
我想知道如何构建一个“类型”,它将正确地捕获/解码被抛向我的_id对象 . 如果有一种方法可以简单地保存数据而不对其进行解码,并在以后需要时将其发回,这也符合我的目的 .
编辑:经过一些实验,我发现_id对象的原始JSON:
"_id":{"$id":"58071f9d3f791f4f4f8b45ff"}
Swift变量/属性名称中不允许使用美元符号,因此我不确定如何以满足传入和传出的方式继续 - 我可以通过手动初始化JSON来创建自定义键,以便它可以正常使用Swift,但是我不确定是否有办法在将同一个对象重新编码回JSON以发送回服务器时将其反转 .
1 回答
将JSON捕获为[String:String]的字典似乎可以解决问题 .
当我发现它是否适用于服务器时会更新 .