gpt4 book ai didi

json - 字符串化 JSON 到 Swift 对象或 JSON 字典

转载 作者:行者123 更新时间:2023-11-30 11:08:55 24 4
gpt4 key购买 nike

在我的 Swift 代码中,我向我的 Node.js 服务器发出了一个 URLRequest:

URLSession.shared.dataTask(with: checkoutRequest, completionHandler: {
[weak self] (data: Data?, response: URLResponse?, error: Error?) in
guard let data = data,
let dataString = String(data: data, encoding: String.Encoding.utf8) else {
return
}

// Help me!!!

}).resume()

node.js 通过 Braintree Payments 结帐 API 处理交易来处理此请求。

checkoutProcessor.processCheckout(amount, nonce, (error, result) => {
// Checkout callback
if (error) {
res.write(error.message)
res.end()
} else if (result) {
console.log(result)
res.write(JSON.stringify(result))
res.end()
}
})

像往常一样,如果 API 请求失败(例如,没有信号),它会返回一个错误,但如果事务通过,它会返回一个结果

但是,结果的类型取决于金融交易是失败还是成功:

例如,成功交易的结果:

Object {transaction: Transaction, success: true}

失败交易的结果:

ErrorResponse {errors: ValidationErrorsCollection, params: Object, message: "Insufficient Funds", transaction: Transaction, success: false}

dataString 最终看起来像这样:

{\"交易\":{\"id\":\"m7mj3qd7\",\"状态\":\"subscribed_for_settlement\",\"类型\":\"销售\",\"currencyIsoCode\":\"美元\",\"金额\":\"12.34\",\"merchantAccountId\":\"yourpianobar\",\"subMerchantAccountId\":null,\"masterMerchantAccountId\":null,\"orderId\":null,\"createdAt\":\"2018-09-19T03:30:27Z\",\"updatedAt\":\"2018-09-19T03:30:27Z\",\"客户\":{\"id\":\"622865439\",\"firstName\":\"Test\",\"lastName\":\"FromSwiftTest\"

这确实类似于 JSON 对象,但我似乎无法使用 JSONDecoder 对其进行解码,这样做会失败。 (JSONEncoder 也失败)

我看到的将字符串化 JSON 数据Object化为 Swift 的大多数解决方案都涉及编写一个 swift struct 来将所有 JSON 对象的属性放入其中,但由于这是数据结构结果是未知的,我不知道该怎么办。

如何将这些对象放入我的 swift 代码中?

注意:我也尝试过在 node.js 代码中发送 res.send(result) 但这并没有真正改变任何东西。

最佳答案

这对于 Swift 5 来​​说是可行的:

    if let data = dataString.data(using: String.Encoding.utf8) {
do {
if let dictionary = try JSONSerialization.jsonObject(with: data, options: []) as? [String:Any] {
// Use this dictionary
print(dictionary)
}
} catch _ {
// Do nothing
}
}

关于json - 字符串化 JSON 到 Swift 对象或 JSON 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52396846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com