Ios 解析来自API调用的响应时遇到困难
我试图从API调用解析响应对象,但遇到了一些困难 首先,我用以下代码解析返回的JSON:Ios 解析来自API调用的响应时遇到困难,ios,json,swift,Ios,Json,Swift,我试图从API调用解析响应对象,但遇到了一些困难 首先,我用以下代码解析返回的JSON: ( { "_id" = 186; accessibility = 1; completeness = "0.6899999999999999"; freshness = "0.5"; grade = Silver; "grade
(
{
"_id" = 186;
accessibility = 1;
completeness = "0.6899999999999999";
freshness = "0.5";
grade = Silver;
"grade_norm" = Silver;
metadata = "0.84";
package = "air-conditioned-and-cool-spaces-heat-relief-network";
"recorded_at" = "2019-12-17T20:24:09";
score = "0.78";
"score_norm" = "0.76";
usability = "0.86";
version = "v0.1.0";
},
{
"_id" = 187;
accessibility = 1;
completeness = 1;
freshness = 0;
grade = Bronze;
"grade_norm" = Bronze;
metadata = "0.25";
package = "air-conditioned-public-places-cooling-centres";
"recorded_at" = "2019-12-17T20:24:09";
score = "0.54";
"score_norm" = "0.31";
usability = "0.85";
version = "v0.1.0";
},
)
让responseObject=试试?JSONSerialization.jsonObjectwith:数据为?[字符串:任意]
如果让结果=响应对象[结果]{
打印结果
}
然后,当我记录结果时,我得到以下结果:
{
"_links" = {
next = "/api/3/action/datastore_search?limit=50&id=22f223e7-73f7-4842-935c-80a0ba5c3e5b&offset=50";
start = "/api/3/action/datastore_search?limit=50&id=22f223e7-73f7-4842-935c-80a0ba5c3e5b";
};
fields = (
{
id = "_id";
type = int;
},
{
id = package;
info = {
label = "";
notes = "Unique, normalized, name of dataset.
"type_override" = "";
};
type = text;
}
)
}
我再次尝试解析它:
让finalResult=试试?JSONSerialization.jsonObjectwith:结果为?[字符串:任意]
但是,我得到了以下错误:
调用类方法“jsonObject”时没有精确匹配项
更新
如果让结果=响应对象[结果]为?[字符串:任意]{
如果让finalResult=结果[记录]{
打印最终结果
}
}
当我记录此日志时,我得到以下信息:
(
{
"_id" = 186;
accessibility = 1;
completeness = "0.6899999999999999";
freshness = "0.5";
grade = Silver;
"grade_norm" = Silver;
metadata = "0.84";
package = "air-conditioned-and-cool-spaces-heat-relief-network";
"recorded_at" = "2019-12-17T20:24:09";
score = "0.78";
"score_norm" = "0.76";
usability = "0.86";
version = "v0.1.0";
},
{
"_id" = 187;
accessibility = 1;
completeness = 1;
freshness = 0;
grade = Bronze;
"grade_norm" = Bronze;
metadata = "0.25";
package = "air-conditioned-public-places-cooling-centres";
"recorded_at" = "2019-12-17T20:24:09";
score = "0.54";
"score_norm" = "0.31";
usability = "0.85";
version = "v0.1.0";
},
)
当我尝试重复此操作时:
对于键,finalResult中的值{
打印键
打印值
}
我得到以下错误:
元组模式不能匹配非元组类型的值
多亏了@OOPer,我才能够将其解析为字典: 如果让结果=响应对象[结果]为?[字符串:任意]{ 如果让finalResult=结果[记录]为?[[字符串:任意]]{ finalResult.forEach{catalog in 如果let package=目录[包装]为?字符串{ } } } }
你想对最终结果做什么?您的结果已经是jsonobject@valosip我想提取各个字段并将它们显示在用户界面上。您的结果以NSDictionary的格式显示。您不应该重新解码它,而应该将它转换为[String:Any]并将其用作Swift字典。@OOPer谢谢。我不知道那是一本字典。我更新了问题,忽略了数据差异。我把它截短了,请把你的工作代码作为你自己的答案。