将枚举与JSON(Swift)一起使用时获取错误

将枚举与JSON(Swift)一起使用时获取错误,json,swift,string,enums,decodable,Json,Swift,String,Enums,Decodable,我试图将Decodable与Enum一起使用,但我的Enum状态中有四个错误:枚举大小写的原始值必须是文本。我是处理JSON数据的新手,我不知道如何让它工作 import UIKit enum BusinessType : String, Decodable { case pizza = String case seafood = String case greek = String case vegan = String } struct Address

我试图将
Decodable
Enum
一起使用,但我的
Enum
状态中有四个错误:枚举大小写的原始值必须是文本。我是处理JSON数据的新手,我不知道如何让它工作

import UIKit

enum BusinessType : String, Decodable {
    case pizza = String 
    case seafood = String
    case greek = String
    case vegan = String
}

struct Address : Decodable {
    var street : String
    var city : String
    var state : String
    var businessType : BusinessType
}

struct Customer : Decodable {
    var firstName : String
    var lastName : String
    var address : Address
}

struct CustomersResponse : Decodable {
    var customers : [Customer]
}


let json = """

{
    "customers":[
        {
            "firstName" : "My",
            "lastName" : "Client",
            "address" : {
                "street" : "100 Business Address",
                "city" : "New York",
                "state" : "NY",
                "businessType" : "pizza"
            }
        }

    ]

}

""".data(using: .utf8)!

let customersResponse = try! 
JSONDecoder().decode(CustomersResponse.self, from: json)
print(customersResponse)

在本例中,
文本
是实际的
字符串
,而不是
类型
。试试这个

enum BusinessType : String, Decodable {
    case pizza = "pizza"
    case seafood = "seafood"
    case greek = "greek"
    case vegan = "vegan"
}

如果将原始值的类型指定为
String
,则不必写入其原始值,因为默认值是案例名称

enum BusinessType : String, Decodable {
    case pizza, seafood, greek, vegan
}

case pizza=String
这没有意义。只需编写
case pizza
(针对所有人)。我认为它应该是
String
,因为它在
结构中的外观。这在当时对我来说是有意义的。为什么我要为所有不同的食物放置
case pizza
?你的意思必须是
case
,然后是相应的食物。