letjsonString="""{"name":1,"gender":"male",}"""structPerson:Codable{varname:Stringvargender:Stringpublicinit(fromdecoder:Decoder)throws{do{letcontainer=trydecoder.container(keyedBy:CodingKeys.self)name=trycontainer.decode(String.self,forKey:.name)gender=trycontainer.decode(String.self,forKey:.ge
我正在尝试解码嵌套的JSON。问题是顶级和嵌套键的名称相似。喜欢:{success:boolmessage:Stringerror:{message:String}}我会从后端收到成功消息或失败消息。如果成功为真,则不会返回错误key,如果为假,则将错误与消息一起发送。如果成功了:{success:truemessage:"Successmessage"}如果失败:{success:falseerror:{message:"Failedmessage"}}以上就是返回的json。这是我的解码结构:structloginResponse:Codable{varsuccess:Boolva
我已经构建了一组API函数来编码对象(使用符合Codable的Struct),然后将生成的JSON数据对象发布到服务器,然后解码JSON响应。一切正常——尤其是对Swift4.2中用于JSON解析的新方法感到满意。但是,现在我想重构代码,以便我可以将代码重用于各种方法调用-当我这样做时,我遇到了一个非常烦人的错误。funcencodeRequestJSON(apiRequestObject:Codable)->Data{do{letencoder=JSONEncoder()letjsonData=tryencoder.encode(apiRequestObject)letjsonStr
我知道有几个与此类似的问题,它们往往都围绕着未正确遵守协议(protocol)的类展开,但这不应该是这里的直接问题。以下是目前给我这个问题的代码的浓缩版:enumBinary:Int{casea=0caseb=1casec=9}finalclassMyClass:NSCoder{varstring:String?vardate:Date?varbinary:Binary=.coverrideinit(){}enumCodingKeys:CodingKey{casestring,date,binary}}extensionMyClass:Codable{convenienceinit(f
我目前收到了Auto-Renewable和Non-Renewable的收据。但是Non-Renewable不会返回expires_datejsonkey。我怎么能忽略这个。我试图避免使expires_date成为可选项。当我将其设为可选时,Apple会发回回复。有什么方法可以在不使expires_date可选的情况下解码json。structReceipt:Codable{letexpiresDate:StringprivateenumCodingKeys:String,CodingKey{caseexpiresDate="expires_date"}}现在我可以得到"Novaluea
例子:importFoundationclassPlayer:Codable{letname:Stringinit(name:String){self.name=name}}classTeam:Codable{letplayers:[Player]letcapitan:Playerinit(players:[Player],capitan:Player){self.players=playersself.capitan=capitan}}letplayer1=Player(name:"p1")letplayer2=Player(name:"p2")letteam=Team(player
我用于后端调用的服务返回所有这些json结构:{"status":"OK","payload":**something**}something可以是一个简单的字符串:{"status":"OK","payload":"nothingchanged"}或嵌套的json(具有任何属性的任何json),例如:{"status":"OK","payload":{"someInt":2,"someString":"hi",...}}这是我的结构:structGenericResponseModel:Codable{letstatus:String?letpayload:String?}我想始终将
我从网络请求中得到以下JSON:{"uvIndex":5}我使用以下类型来解码字符串到数据的结果:internalfinalclassDataDecoder{internalfinalclassfuncdecode(_data:Data)->T?{returntry?JSONDecoder().decode(T.self,from:data)}}下面是数据要转换成的模型:internalstructCurrentWeatherReport:Codable{//MARK:PropertiesinternalvaruvIndex:Int?//MARK:CodingKeysprivateen
设置Codable类。AnyObjects数组产生编译错误:Referencetomember'data'cannotberesolvedwithoutacontextualtypeclassClassA:NSObject,Codable{//MARK:-Propertieslettitle:Stringletdata:[T]//dataisanarrayofeitherCodableobjectsofClassBorClassC.//MARK:-KeyesprivateenumCodingKeys:String,CodingKey{casetitlecasedata}required
在Swift4中以自定义方式将自定义类型编码为JSON很容易,并且有很好的文档可用。但是我在以自定义方式编码Foundation类型时遇到了问题。我的具有类型TimeInterval属性的自定义类型需要是Codable并使用JSON格式显示分钟和秒,如下所示://mytype:structMyType:Codable{lettime:TimeInterval=65.12}//requiredJSONrepresentation:"myType":{"time":{"minutes":1,"seconds":5.12}}如果我为我的每一个类型提供encode(to:)和init(deco