Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析没有对象的JSON文件_Json_Swift_Parsing_Struct_Codable - Fatal编程技术网

解析没有对象的JSON文件

解析没有对象的JSON文件,json,swift,parsing,struct,codable,Json,Swift,Parsing,Struct,Codable,我试图用Swift解析下面的JSON文件。我不知道如何解析没有对象的文件,所以任何帮助都会很好。下面是示例JSON [ "sleeping bag", "Arabian camel, dromedary, Camelus dromedarius", "water" ] 下面是我用来解码文件的代码 struct ItemsStruct: Codable { let item: String } public extension Decodable{ st

我试图用Swift解析下面的JSON文件。我不知道如何解析没有对象的文件,所以任何帮助都会很好。下面是示例JSON

[
    "sleeping bag",
    "Arabian camel, dromedary, Camelus dromedarius",
    "water"
]
下面是我用来解码文件的代码

struct ItemsStruct: Codable {
    let item: String
}

public extension Decodable{
    static func fromFile<T : Decodable>(_ filename : String, class : T.Type)->T?{
        let fileparts = filename.split(separator: ".")
        guard fileparts.count == 2 else{
            return nil
        }
        guard let path = Bundle.main.url(forResource: String(fileparts[0]), withExtension: String(fileparts[1])),
            let data = try? Data.init(contentsOf: path),
            let _struct = try? JSONDecoder().decode(T.self, from: data) else{
                return nil
        }
        return _struct
    }
}

guard let items = ItemsStruct.fromFile("objects.json", class: [ItemsStruct].self) else {return}
        for item in items{
            print(item)
        }
struct ItemsStruct:Codable{
让项目:字符串
}
公共扩展可解码{
静态func fromFile(ufilename:String,class:T.Type)->T{
让fileparts=filename.split(分隔符:“.”)
guard fileparts.count==2{
归零
}
guard let path=Bundle.main.url(forResource:String(fileparts[0]),扩展名为String(fileparts[1]),
让data=try?data.init(contentsOf:path),
让_struct=try?JSONDecoder()。解码(T.self,from:data)其他{
归零
}
返回结构
}
}
guard let items=ItemsStruct.fromFile(“objects.json”,class:[ItemsStruct].self)else{return}
对于项目中的项目{
打印(项目)
}
我知道我不应该有“let item:String”,但我不确定在结构中放什么,因为没有对象


我需要不同的JSON数据吗?

这是一个
字符串数组

guard let items = [String].fromFile("objects.json", class: [String].self) else {return}
for item in items{
    print(item)
}

顺便说一下,语法很奇怪。你应该让方法抛出所有可能的错误,而不是返回可选的并忽略所有错误。

有一个对象,一个数组。。。