我通过Swift 4 JSON可编码方法从API返回字符串值。
我知道很少有值是“null”或nil,所以为了避免崩溃,我正在尝试实现代码。以下是给出主题错误的代码(在NSNull比较中):
if Cur[indexPath.row].cap == nil || Cur[indexPath.row].cap == NSNull {
print("Could not find the value")
CapVal = "N/A"
} else {
CapVal = Cur[indexPath.row].cap!
}
错误:
二进制运算符'=='不能应用于类型为'String?'和'NSNull的操作数。类型
我也尝试将其转换为字符串:Cur[indepath.row]。cap组件?字符串仍然出现相同的错误。
如果您使用的是JSONDecoder
,则缺失值和显式指定为null
的值都将返回为nil
:
考虑以下JSON:
{"foo": "a", "bar": null}
这个结构:
struct Result: Decodable {
var foo: String
var bar: String?
var baz: String?
}
如果使用JSONDecoder,只需执行以下操作:
guard let result = try? JSONDecoder().decode(Result.self, from: data) else { ... }
let bar = result.bar ?? "N/A"
我知道您在询问Swift 4中的Coable
,但仅供您参考,如果您使用JSONSeriize
,但是,理论上您可以测试null
,因为JSONSeriize
确实将null
值返回为NSNull
:
guard let json = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any] else { ... }
let bar = json["bar"]
if bar == nil || bar is NSNull {
// bar was either not found or `null`
} else {
// bar was found and was not `null`
}
但就我个人而言,如果强制转换失败,我会选择强制转换为字符串并使用聚合操作符,例如。
let bar = (json["bar"] as? String) ?? "N/A"
但是,这对于Swift 4的JSONDecoder
来说是没有实际意义的。
根据JSON规范,表示null值的正确方法是文字。 预期结果: 实际结果:
问题内容: 我最近一直在搞弄api,发现有些奇怪的地方。 返回一个对象。输出 但是,如果将其写为: 这是您可以访问标题属性的标准。 所以我的问题是:为什么要在对象文字中返回一个promise,但是如果刚返回则返回一个值? 问题答案: 为什么要兑现承诺? 因为您在所有标头到达后立即收到。调用使您对尚未加载的http响应的正文有了另一个保证。另请参见[为什么来自JavaScriptfetch API的
问题内容: 检查以下代码段: http://play.golang.org/p/xusdITxgT- 为什么会这样呢?因为我的论点之一必须是切片地址。 也许我没有对每个人都说清楚。 上面的代码就是为什么我需要一个分片地址。 结果变量在这里是我需要的。现在通常我可以做到 但是现在SomeStruct是动态的,我需要使用reflect.MakeSlice创建切片 而且它在上出错:结果必须是一个分片地址
我正在做一个练习游戏。 我有一个Spring引导/Maven项目连接到MySQL数据库。我能够设置一个api,它只是从我的“所有谜语”表中检索所有内容。它以前工作过,但是现在api返回一个json,其中一些键的值为空。我唯一玩的是Spring引导文件上的application.properties。我在spring.jpa.hibernate.ddl的“更新”和“无”之间跳跃。我到底做错了什么?
我在客户端使用vue、vue路由器,在服务器端使用express、morgan(MEVN应用程序) 在客户端我用vue cookie设置cookie 在服务器端,我使用CookieParser 所以,在应用程序。我有这样的代码 并且,在文件中,我有这样一个GET请求的代码 问题是,var loginHash=req.cookies['Login'];总是返回未定义的,即使我有登录cookie 添加
问题内容: 我经常看到这样的代码(C,C ++,有时甚至是Java): 我看不到这些括号有任何好处。所以我的问题是,程序员是否假定函数是某种以返回值作为参数的函数,或者确实有这些括号有意义的情况吗? 我了解这里已经提出了类似的问题,但这仅与ANSI C有关。我想知道是否存在某些特定于C ++或Java的方面尚未得到解答。 问题答案: 关于C 括号放在有表达式的位置,并且希望返回值是表达式的值。 即