簡體   English   中英

Swift,如何從Pandas JSON文件導入JSON文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM