Json Swift-参数类型不符合预期类型

Json Swift-参数类型不符合预期类型,json,swift,generics,decoding,codable,Json,Swift,Generics,Decoding,Codable,我试图在我的Swift应用程序中制作一个可重用的JSON解码器,但运行时出现以下错误: 参数类型“User.type”不符合预期的类型“Decodable” 参数类型“User.type”与预期类型“Encodable”不一致 我的代码如下: func解码(uutype:T.type,from:String)->[T]{ 让url=url(fileURLWithPath:from) let data=try?数据(contentsOf:url) 让result=try?JSONDecoder

我试图在我的Swift应用程序中制作一个可重用的JSON解码器,但运行时出现以下错误:

  • 参数类型“User.type”不符合预期的类型“Decodable”
  • 参数类型“User.type”与预期类型“Encodable”不一致
我的代码如下:

func解码(uutype:T.type,from:String)->[T]{
让url=url(fileURLWithPath:from)
let data=try?数据(contentsOf:url)
让result=try?JSONDecoder().decode([T].self,from:data!)
返回结果!
}
打印(解码(User.self,from:“data.json”)
谢谢你帮我解决这个问题

致以最良好的祝愿,
NG253

如果编译器知道返回类型,则不需要将该类型作为参数传递

这是我的版本(使用本地字符串)

func解码(from:String)抛出->[T]{
//让url=url(fileURLWithPath:from)
//let data=try?数据(contentsOf:url)
让data=from.data(使用:.utf8)!
返回try JSONDecoder().decode([T].self,from:data!)
}
结构用户:可解码{
let name:String
}
让str=”“”
[{“姓名”:“abc”}]
"""
做{
让用户:[User]=尝试解码(from:str)
}抓住{
打印(错误)
}

什么是
User
?它是如何定义的?用户定义:
struct User:Codable{var name:String}
我的JSON是:
[{“name”:“John”“age”:24},{“name”:“John”“age”:27}]
函数解码({type:T.type,from:String)->[T]{相反。你的方法应该这样定义。因为你是用
User.self
调用它的,所以,它是一个
类型
,你是作为参数传递的。另外,这就是“原始方法”的编写方式:应用程序现在正在生成,但当调用该方法时,应用程序崩溃。
func decode<T: Decodable>(from: String) throws -> [T] {
    //let url = URL(fileURLWithPath: from)
    //let data = try? Data(contentsOf: url)
    let data = from.data(using: .utf8)!
    return try JSONDecoder().decode([T].self, from: data!)
}

struct User: Decodable {
    let name: String
}

let str = """
   [{"name": "abc"}]
"""

do {
    let users: [User] = try decode(from: str)
} catch {
    print(error)
}