使用 SwiftyJSON 解析嵌入式 JSON
Parse Embedded JSON with SwiftyJSON
我已经有一段时间了,但无法正确解析。我正在尝试解析此 json 文件:
{
"order_history" : [ {
"items" : [ {
"id" : 284,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-10-08-050",
"name" : "Product one of set one",
"description" : "",
"quantity" : 1.0,
"price" : 2000.0,
"total" : 2000.0,
"tax" : null,
"discount" : null
}, {
"id" : 285,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-22-12-247",
"name" : "Product 2 of set 1",
"description" : "",
"quantity" : 1.0,
"price" : 2300.0,
"total" : 2300.0,
"tax" : null,
"discount" : null
}, {
"id" : 286,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-22-12-249",
"name" : "Product 3 of set 1",
"description" : "",
"quantity" : 1.0,
"price" : 3700.0,
"total" : 3700.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 288,
"created" : [ 2016, 5, 26, 5, 29, 51 ],
"updated" : [ 2016, 5, 27, 0, 31, 11 ],
"sku" : "JJ-02-00-042",
"name" : "Product 1 of set 2",
"description" : "",
"quantity" : 1.0,
"price" : 3000.0,
"total" : 3000.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 310,
"created" : [ 2016, 5, 30, 7, 40, 41 ],
"updated" : [ 2016, 5, 30, 7, 40, 46 ],
"sku" : "J481",
"name" : "Product 1 set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 311,
"created" : [ 2016, 5, 30, 7, 48, 39 ],
"updated" : [ 2016, 5, 30, 7, 48, 44 ],
"sku" : "JJ1",
"name" : "Product 2 set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 312,
"created" : [ 2016, 5, 30, 9, 8, 31 ],
"updated" : [ 2016, 5, 30, 9, 8, 32 ],
"sku" : "J77",
"name" : "Product 3 in set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ]
}
]
}
现在我能得到的只是第一套产品。我想要做的是获得所有三组以及 "created" 字段。我根本没有运气获得创建的领域。它只是空的。
这就是我从 json 文件中获取数据的方式
for (_, myosin) in newJson["order_history"][0]["items"] {
if let set = myosin["name"].string {
//products is a string crated somewhere up there ^
products.appendContentsOf("\n" + name)
}
}
感谢您对此提供的任何帮助。
您正在将 "name" 字段解码为 set
变量,但随后您试图使用不存在的 name
变量。你也在使用 appendContentsOf
但它应该是 append
.
var products = [String]()
for (_, myosin) in newJson["order_history"][0]["items"] {
if let set = myosin["name"].string {
products.append("\n" + set)
}
}
print(products)
并获取每个字典的 "created" 数组:
var createdArrays = [[Int]]()
for (_, myosin) in newJson["order_history"][0]["items"] {
if let created = myosin["created"].arrayObject as? [Int] {
createdArrays.append(created)
}
}
print(createdArrays)
我已经有一段时间了,但无法正确解析。我正在尝试解析此 json 文件:
{
"order_history" : [ {
"items" : [ {
"id" : 284,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-10-08-050",
"name" : "Product one of set one",
"description" : "",
"quantity" : 1.0,
"price" : 2000.0,
"total" : 2000.0,
"tax" : null,
"discount" : null
}, {
"id" : 285,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-22-12-247",
"name" : "Product 2 of set 1",
"description" : "",
"quantity" : 1.0,
"price" : 2300.0,
"total" : 2300.0,
"tax" : null,
"discount" : null
}, {
"id" : 286,
"created" : [ 2016, 5, 26, 5, 27, 53 ],
"updated" : [ 2016, 5, 27, 0, 31, 10 ],
"sku" : "10-22-12-249",
"name" : "Product 3 of set 1",
"description" : "",
"quantity" : 1.0,
"price" : 3700.0,
"total" : 3700.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 288,
"created" : [ 2016, 5, 26, 5, 29, 51 ],
"updated" : [ 2016, 5, 27, 0, 31, 11 ],
"sku" : "JJ-02-00-042",
"name" : "Product 1 of set 2",
"description" : "",
"quantity" : 1.0,
"price" : 3000.0,
"total" : 3000.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 310,
"created" : [ 2016, 5, 30, 7, 40, 41 ],
"updated" : [ 2016, 5, 30, 7, 40, 46 ],
"sku" : "J481",
"name" : "Product 1 set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 311,
"created" : [ 2016, 5, 30, 7, 48, 39 ],
"updated" : [ 2016, 5, 30, 7, 48, 44 ],
"sku" : "JJ1",
"name" : "Product 2 set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ],
"items" : [ {
"id" : 312,
"created" : [ 2016, 5, 30, 9, 8, 31 ],
"updated" : [ 2016, 5, 30, 9, 8, 32 ],
"sku" : "J77",
"name" : "Product 3 in set 3",
"description" : "",
"quantity" : 1.0,
"price" : 2200.0,
"total" : 2200.0,
"tax" : null,
"discount" : null
} ]
}
]
}
现在我能得到的只是第一套产品。我想要做的是获得所有三组以及 "created" 字段。我根本没有运气获得创建的领域。它只是空的。
这就是我从 json 文件中获取数据的方式
for (_, myosin) in newJson["order_history"][0]["items"] {
if let set = myosin["name"].string {
//products is a string crated somewhere up there ^
products.appendContentsOf("\n" + name)
}
}
感谢您对此提供的任何帮助。
您正在将 "name" 字段解码为 set
变量,但随后您试图使用不存在的 name
变量。你也在使用 appendContentsOf
但它应该是 append
.
var products = [String]()
for (_, myosin) in newJson["order_history"][0]["items"] {
if let set = myosin["name"].string {
products.append("\n" + set)
}
}
print(products)
并获取每个字典的 "created" 数组:
var createdArrays = [[Int]]()
for (_, myosin) in newJson["order_history"][0]["items"] {
if let created = myosin["created"].arrayObject as? [Int] {
createdArrays.append(created)
}
}
print(createdArrays)