[英]Swift, How to import JSON file from Pandas JSON file
我從Pandas導出了JSON文件,並且想從Swift / iOS導入JSON文件。
可編碼協議的結構正確。
我嘗試使用SWIFTYJSON,但是也會發生相同的錯誤。
這是熊貓碼。
shops.to_json("sample.json", orient='records', force_ascii=False, lines=True)
我寫了這樣的代碼
struct Restaurant: Codable {
let url: String
let name: String
let address: String
let pref: String
let zip: String
let tel: String
let latitude: Float
let longitude:Float
let price: String
let category: String
let rate: Float
let moyori: String
let transportation: String
let hours: String
let holiday: String
let website: String
}
guard let path = Bundle.main.path(forResource: "sample", ofType: "json") else { return }
let url = URL(fileURLWithPath: path)
do {
let data = try Data(contentsOf: url)
print(data)
let restaurant = try JSONDecoder().decode(Restaurant.self, from: data)
// SWIFTY JSON
//let json = try JSON(data: data)
print(restaurant)
} catch {
print(error)
}
錯誤如下
dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo={NSDebugDescription=Garbage at end.})))
這是JSON示例
{"address":"港區赤坂1-11-6 赤坂テラスハウス 1階","category":"割烹・小料理","holiday":"日曜、祝日(詳細は公式HPのカレンダーに記載)","hours":"12:00~15:00(L.O.13:00)(木・土のみ営業)18:00~22:00(L.O.20:00)","latitude":35.6642294444,"longitude":139.7455658333,"moyori":"六本木一丁目","name":"sample restaurant2","pref":"東京都","price":"¥30,000~","rate":"4.88","url":"http://www.sample1.com","tel":"03-0000-0000","transportation":"東京メトロ 銀座線・南北線「溜池山王駅」13出口より、徒歩10分東京メトロ 南北線「六本木一丁目駅」3出口より、徒歩10分東京メトロ 日比谷線「神谷町駅」4b出口より、徒歩10分\n六本木一丁目駅から411m","website":"http://www.sample1.com","zip":"1070052"}
{"address":"港區六本木1-4-5 アークヒルズサウスタワー 1F","category":"壽司","holiday":"日曜・祝日(但し、連休にならない祝日は除く)","hours":"12:00~14:0017:00~23:00","latitude":35.6621280556,"longitude":139.7426308333,"moyori":"溜池山王","name":"sample restarurant2","pref":"東京都","price":"¥20,000~¥29,999","rate":"4.86","url":"http://www.sample.com","tel":"03-3589-4412","transportation":"溜池山王駅徒歩5分虎ノ門駅徒歩8分\n六本木一丁目駅から60m","website":"","zip":"1060032"}
我也測試過這個jsonfile
[{"address":"港區赤坂1-11-6 赤坂テラスハウス 1階","category":"割烹・小料理","holiday":"日曜、祝日(詳細は公式HPのカレンダーに記載)","hours":"12:00~15:00(L.O.13:00)(木・土のみ営業)18:00~22:00(L.O.20:00)","latitude":35.6642294444,"longitude":139.7455658333,"moyori":"六本木一丁目","name":"sample restaurant2","pref":"東京都","price":"¥30,000~","rate":"4.88","url":"http://www.sample1.com","tel":"03-0000-0000","transportation":"東京メトロ 銀座線・南北線「溜池山王駅」13出口より、徒歩10分東京メトロ 南北線「六本木一丁目駅」3出口より、徒歩10分東京メトロ 日比谷線「神谷町駅」4b出口より、徒歩10分\n六本木一丁目駅から411m","website":"http://www.sample1.com","zip":"1070052"},{"address":"港區六本木1-4-5 アークヒルズサウスタワー 1F","category":"壽司","holiday":"日曜・祝日(但し、連休にならない祝日は除く)","hours":"12:00~14:0017:00~23:00","latitude":35.6621280556,"longitude":139.7426308333,"moyori":"溜池山王","name":"sample restarurant2","pref":"東京都","price":"¥20,000~¥29,999","rate":"4.86","url":"http://www.sample.com","tel":"03-3589-4412","transportation":"溜池山王駅徒歩5分虎ノ門駅徒歩8分\n六本木一丁目駅から60m","website":"","zip":"1060032"}]
錯誤是這樣的
typeMismatch(Swift.Dictionary<Swift.String, Any>, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Dictionary<String, Any> but found an array instead.", underlyingError: nil))
enter code here
struct Tabelog: Codable {
let url: String
let name: String
let address: String
let pref: String
let zip: String
let tel: String
let latitude: Float
let longitude:Float
let price: String
let category: String
let rate: String
let moyori: String
let transportation: String
let hours: String
let holiday: String
let website: String
}
是正確的,類型是錯誤的。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.