【发布时间】:2018-04-08 22:08:51
【问题描述】:
我正在使用 MicrosoftAzureMobile 框架从 APP 的 nodeJs 后端获取一些数据。我必须解析实际上是 json 到我的 ViewModel 的响应。微软提供了一个名为invokeApi(someparams)的函数。
问题是,完成处理程序是这样构建的
completion: (data: Any?, response: HTTPURLResponse?, error: Error?) in { ... }
当我现在尝试将其转换为 Data 时,它失败了。所以我必须以某种方式弄清楚如何解析json以在JSONDecoder.decode()中使用它
Data 属性的 Json 如下所示:
{
content = {
createDatetime = "...";
expireDatetime = "...";
expiresIn = 1234;
refreshToken = "...";
token = "...";
valid = 1;
};
destination = "...";
hash = ...;
status = successful;
type = "sometype";
}
编辑 1: 我尝试使用以下代码转换数据,但没有成功:
let json = data as! Dictionary<String, Any>
let convertedData : Data = NSKeyedArchiver.archivedData(withRootObject: json) as Data
print(convertedData as Data)
let tokenServiceResult = try JSONDecoder().decode(TokenServiceResult.self, from: convertedData)
但这给了我以下错误:
dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.})))
【问题讨论】:
-
Model等于Json,如果你喜欢我也可以贴出来