问题描述
我是Swift语言的新手,我试图在Xcode中构建一个简单的JSON解析应用。
这是我得到的错误: typeMismatch(Swift.Double,Swift.DecodingError.Context(codingPath:[CodingKeys(stringValue:“ Date”,intValue:nil)]],debugDescription:“预期解码Double,但找到了一个字符串/数据。”,底层错误:nil))
这是一个要解析的链接: https://www.cbr-xml-daily.ru/daily_json.js
我有什么模型:(我使用https://app.quicktype.io来创建它)
struct Welcome: Codable {
var date,prevIoUsDate: Date
var prevIoUsURL: String
var timestamp: Date
var valute: [String: Valute]
enum CodingKeys: String,CodingKey {
case date = "Date"
case prevIoUsDate = "PrevIoUsDate"
case prevIoUsURL = "PrevIoUsURL"
case timestamp = "Timestamp"
case valute = "Valute"
}
}
struct Valute: Codable {
var id,numCode,charCode: String
var nominal: Int
var name: String
var value,prevIoUs: Double
enum CodingKeys: String,CodingKey {
case id = "ID"
case numCode = "NumCode"
case charCode = "CharCode"
case nominal = "Nominal"
case name = "Name"
case value = "Value"
case prevIoUs = "PrevIoUs"
}
}
以下是用于解析和解码的代码:
func request(urlString: String,completion: @escaping (Welcome?,Error?) -> Void) {
guard let url = URL(string: urlString) else { return }
URLSession.shared.dataTask(with: url) { (data,response,error) in
if let error = error {
print("Some error")
completion(nil,error)
return
} else {
guard let data = data else { return }
do {
let welcome = try JSONDecoder().decode(Welcome.self,from: data)
completion(welcome,nil)
} catch let jsonError {
print("Failed to decode JSON: \(jsonError)")
completion(nil,jsonError)
}
}
} .resume()
}
真的很感谢您的帮助/建议。
解决方法
这是因为您没有正确解码n = 2
disc_weights = np.random.uniform(0,2 * np.pi,4*n)
iter_ = itertools.product('XYZ',range(n))
tuple_wrapper = lambda t: f'{t[0]}{t[1]}'
sum_ = 0.0 * QubitOperator('')
for dw in disc_weights:
try:
sum_ += dw * QubitOperator(tuple_wrapper(next(iter_)))
except StopIteration:
sum_ += dw * QubitOperator('')
。
尝试为Date
设置dateDecodingStrategy
:
JSONDecoder