Swift 将对象解析为 JSON 对象
Posted
技术标签:
【中文标题】Swift 将对象解析为 JSON 对象【英文标题】:Swift parse object to JSON object 【发布时间】:2020-05-04 11:49:58 【问题描述】:我正在使用 shopify ios SDK(mobile-buy-sdk-ios) 进行原生反应以获取登录用户的订单。 这是我的代码,
let query = Storefront.buildQuery $0
.customer(customerAccessToken: token) $0
.orders(first: count, reverse: true) $0
.edges $0
.node $0
.id()
.orderNumber()
.totalPrice()
.statusUrl()
.lineItems(first: 25) $0
.edges $0
.node $0
.title()
.quantity()
.variant $0
.id()
.price()
.title()
.image $0
.originalSrc()
let task = self.client.queryGraphWith(query, cachePolicy: .networkOnly) response, error in
error.debugUserPrint()
let userOrders = response.customer?.orders.edges[0].node;
let res = try! JSONSerialization.data(withJSONObject: userOrders)
completion([res])
我在 userOrders 变量中得到这个响应
<QueryRoot: ["customer":
orders =
edges = (
node =
id = "Z2lkOi8vc2hvcGlmeS9PcmRlci8yMjY2NTM3NzU0NzEwP2tleT0zNWFiYzBkMjRmMDk3MjZlYzgzYjkwZDVlZGI5YjM4MA==";
lineItems =
edges = (
node =
quantity = 1;
title = "Gift wrapping";
variant =
id = "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0VmFyaWFudC8xMjE3MzkzNjYyMzcwMg==";
image =
originalSrc = "https://cdn.shopify.com/s/files/1/2331/3377/products/Gift_Boxes_11_22_2017_Standard_1024x1024_60d01a1c-f665-4c9e-b80b-f6fda9167de3.jpg?v=1521444032";
;
price = "10.00";
title = "Default Title";
;
;
);
;
orderNumber = 1040;
statusUrl = "23313377/orders/11f378e7df2731521429f377015d2ec2/authenticate?key=35abc0d24f09726ec83b90d5edb9b380";
totalPrice = "10.00";
;
);
;
]>)
这个格式,所以尝试将此数据解析为 JSON 对象,以将数据从 iOS 函数传递到 javascript 函数。我试过了
JSONSerialization.data(withJSONObject: userOrders)
但它不起作用。我只想将这些数据解析为 JSON。我也尝试了许多其他方法,但没有运气。
谢谢。
【问题讨论】:
请添加您正在尝试的完整代码。 请检查一下,我已经添加了整个 iOS 代码。 【参考方案1】:它们是我能想到的多种方式...
-
Alamofire 如果您有权访问该查询端点
Alamofire.request("http://feeds.news24.com/articles/Fin24/Tech/rss").responseJSON json in
/// do what you want with your json
-
没有端点,使用SwiftyJSON
let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string
//Now you got your value
【讨论】:
我知道 JSON 对象在 swift 中有很多方法,但我想获取这个不起作用的特定响应的 JSON。【参考方案2】:我认为没有直接的方法来获取 JSON,使用 mobile-buy-sdk。但是您可以将响应转换为 JSON
if let data = try? JSONSerialization.data(withJSONObject: userOrders.fields, options: .prettyPrinted)
print(String(data: data, encoding: .utf8))
【讨论】:
以上是关于Swift 将对象解析为 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3 中将 JSON 对象解析为 NSArray