代码之家  ›  专栏  ›  技术社区  ›  david

如何在解析json时捕获错误而不为每个键使用if?

  •  1
  • david  · 技术社区  · 10 年前

    下面是我如何解析json:

    let myObject = MyObject()
    let string1 = if jsonObject["string1"] as? String{
        myObject.string1 = string1
    }else{
      throw InValidJson
    }
    
    let string2 = if jsonObject["string2"] as? String{
        myObject.string2 = string2
    }else{
      throw InValidJson
    }
    
    let string3 = if jsonObject["string3"] as? String{
        myObject.string3 = string3
    }else{
      throw InValidJson
    }
    

    但我在if everywhere中使用的代码太多了,是否可以执行以下操作:

    do{
       myObject.string1 = if jsonObject["string1"] as! String
       myObject.string2 = if jsonObject["string2"] as! String
       myObject.string3 = if jsonObject["string3"] as! String
    
    }catch(){
       error.description
    }
    

    所以我不需要检查每个键,因为我的json太大了。

    谢谢

    1 回复  |  直到 10 年前
        1
  •  1
  •   Ahmed Onawale    10 年前

    您可以这样做:

    guard let string1 = jsonObject["string1"] as? String,
      string2 = jsonObject["string2"] as? String,
      string3 = jsonObject["string3"] as? String else {
      //handle error
      return
    }