gpt4 book ai didi

ios - 将 Json 数组中的对象解析为字典 Swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:33 24 4
gpt4 key购买 nike

所以我有格式为字典列表的 JSON 数据,我将它存储为 NSArray 对象,但我不确定如何将每个条目转换为当前 AnyObject 的字典对象

AnyObject 数据已经像 JSON 字典一样格式化

这是我用来创建数组的代码

func startConnection(){
let urlPath: String = "http://api.mtgdb.info/search/omni"
var url: NSURL = NSURL(string: urlPath)!
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()




}

func connection(connection: NSURLConnection!, didReceiveData data: NSData!){
self.data.appendData(data)
}

func connectionDidFinishLoading(connection: NSURLConnection!){
var err: NSError
var jsonResult: NSArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSArray
for var i = 0; i<jsonResult.count; ++i{
...

}

}

最佳答案

我试过这个示例代码来解决你的问题。首先在网络浏览器中运行这个“http://api.mtgdb.info/search/omni”URL 并复制响应然后粘贴到“http://jsonlint.com”,响应有效并且我得到 8 个字典的数组,例如 id:37113、39932、83737、106426、228247, 288937, 382286, 386302 -- 8个数据。

在 Objective C 中,它运行完美,我得到的结果与网络浏览器相同。但是在 Swift 中,它表现得很奇怪,无法解析整个 respose,只能得到一半的字典作为数组的对象。只得到这么多的响应,

jsonResult的打印说明:
(
{
艺术家 = “Arnie Swekel”;
cardSetId = JUD;
cardSetName = 判断;
颜色 = (
绿色,
白色的
);
转换后的法力消耗 = 7;
description = "践踏\nNishoba 幻影进战场时上面有七个 +1/+1 指示物。\n每当 Nishoba 幻影造成伤害时,你获得等量的生命。\n如果 Nishoba 幻影将受到伤害,则防止该伤害。移除一个来自 Phantom Nishoba 的 +1/+1 指示物。";
味道=“”;
格式 = (
{
合法性=合法性;
name = "奥德赛 block ";
},
{
合法性=合法性;
名称=遗产;
},
{
合法性=合法性;
名称 = 年份;
},
{
合法性=合法性;
名称 = 自由形式;
},
{
合法的

我试过这段代码示例

class ViewController: UIViewController, NSURLConnectionDelegate {

var data:NSMutableData!
var arrvehicls:NSMutableArray!


override func viewDidLoad() {
super.viewDidLoad()
self.data = NSMutableData()
self.arrvehicls = NSMutableArray()

self.startConnection()
}

func startConnection(){
let urlPath: String = "http://api.mtgdb.info/search/omni"
var url: NSURL = NSURL(string: urlPath)!
var request: NSURLRequest = NSURLRequest(URL: url)
var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()
}

func connection(connection: NSURLConnection!, didReceiveData data: NSData!){
self.data.appendData(data)
}

func connectionDidFinishLoading(connection: NSURLConnection!) {

var err: NSError
var jsonResult:NSArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSArray

for var i = 0; i<jsonResult.count; ++i {

var dictResult = jsonResult.objectAtIndex(i) as! NSDictionary

var vehicleInfo = Vehicle()
vehicleInfo.id = dictResult.valueForKey("id") as! Int
vehicleInfo.artist = dictResult.valueForKey("artist") as! String
vehicleInfo.cardID = dictResult.valueForKey("cardSetId") as! String
vehicleInfo.cardName = dictResult.valueForKey("cardSetName") as! String
vehicleInfo.colors = dictResult.valueForKey("colors") as! NSArray
vehicleInfo.details = dictResult.valueForKey("description") as! String
vehicleInfo.flavour = dictResult.valueForKey("flavor") as! String
vehicleInfo.formats = NSMutableArray()
var arr = dictResult.valueForKey("formats") as! NSArray

for var j = 0; j<arr.count; ++i {

var dictFormats = arr.objectAtIndex(i) as! NSDictionary
var formats = Formats()
formats.legality = dictFormats.valueForKey("legality") as! String
formats.name = dictFormats.valueForKey("name") as! String
vehicleInfo.formats.addObject(formats)
}
self.arrvehicls.addObject(vehicleInfo)
}
}
}

关于ios - 将 Json 数组中的对象解析为字典 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631870/

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