【发布时间】:2017-11-10 03:33:16
【问题描述】:
{
"values":[
[1,1,7,"Azuan Child","Anak Azuan","12345","ACTIVE","Morning",7,12,"2017-11-09 19:45:00"],
[28,1,0,"Azuan Child2","Amran","123456","ACTIVE","Evening",1,29,"2017-11-09 19:45:00"]
]
}
好的,这是我从服务器收到的 json 格式
现在我想将它解码到我的结构中,但仍然没有运气。
struct ChildrenTable: Decodable {
var values: [[String]]?
}
我在 URLSession 上的调用方法看起来像这样
URLSession.shared.dataTask(with: request) { (data, response, err) in
guard let data = data else { return }
let dataAsString = String(data: data, encoding: .utf8)
print(dataAsString)
do {
let children = try
JSONDecoder().decode(ChildrenTable.self, from: data)
print (children)
} catch let jsonErr {
print ("Error serializing json: ", jsonErr)
}
}.resume()
我得到的错误是
Error serializing json:
typeMismatch(Swift.String, Swift.DecodingError.Context(codingPath: [Vito_Parent.ChildrenTable.(CodingKeys in _1B826CD7D9609504747BED0EC0B7D3B5).values, Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0)),
Foundation.(_JSONKey in _12768CA107A31EF2DCE034FD75B541C9)(stringValue: "Index 0", intValue: Optional(0))],
debugDescription: "Expected to decode String but found a number instead.", underlyingError: nil))
我知道数组中有一个 int 并且我只为值 var values: [[String]]? 转换 String (这个错误弹出的原因),但我根本不能在我的结构中使用任何多维数组或元组,因为它遵循协议可解码。
我也无法将数据转换为字典,因为它会抛出错误“预期解码字典但找到数组”
有解决这个问题的想法吗?我尝试在数据上转换字符串类型,但仍然没有运气......
p/s:如果所有的json格式都是string类型的,没有问题,但是我没有权限改变它,因为我是从API调用的。
【问题讨论】:
标签: arrays json multidimensional-array swift4 decodable