Asp.net 无法从JSON Web服务获取值
我有一个Web服务,它从数据库中提取数据,并将数据以JSON格式发送到Iphone 我的网络服务:Asp.net 无法从JSON Web服务获取值,asp.net,ios,xcode,json,web-services,Asp.net,Ios,Xcode,Json,Web Services,我有一个Web服务,它从数据库中提取数据,并将数据以JSON格式发送到Iphone 我的网络服务: [ScriptMethod(ResponseFormat = ResponseFormat.Json)] [WebMethod] public string Person() { return Helper.Person(); } 我的助手 public class Helper { internal stati
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string Person()
{
return Helper.Person();
}
我的助手
public class Helper
{
internal static string Person()
{
List<object> person = new List<object>();
using (SqlConnection con = new SqlConnection(@"Data Source=Localhost\SQLEXPRESS;Initial Catalog=BOOK-IT-V2;Integrated Security=true;"))
using (SqlCommand cmd = new SqlCommand(@"SELECT EMAIL FROM PERSON", con))
{
con.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
if (rdr["EMAIL"] != DBNull.Value)
{
raumKlassenObject.Add(new {
Email=rdr["EMAIL"].ToString()});
}
}
}
}
return new JavaScriptSerializer().Serialize(person.ToArray());
}
}
但是如果我尝试
self.array = [[dic objectForKey:@"d"] objectForKey:@"Email"];
要仅获取值,请执行以下操作:abcd@web.de, acsb@web.de, asbd@gmx.de等等
所以我得到了一个错误:
[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6a4ccb0.
我认为Web服务返回了一些错误信息,但我不知道是什么。也许你能帮我
提前谢谢。您有一组字典,每个字典中有一个单键(
“Email”
)
objectForKey:
是一种返回字典中键的对象的方法
无法对从[dic objectForKey:@“d”]
接收的数组调用此方法,因为此方法不适用于数组
而是像这样使用objectAtIndex:
:
self.array = [dic objectForKey:@"d"];
NSMutableArray *finalArray = [[NSMutableArray alloc] init];
for(int n=0; n<[self.array count]; n++)
[finalArray addObject:[[self.array objectAtIndex:n] objectForKey:@"Email"]];
self.array=[dic objectForKey:@“d”];
NSMutableArray*finalArray=[[NSMutableArray alloc]init];
对于(int n=0;n而言,问题在于:
[dic objectForKey@"d"]
返回字典数组。无法使用objectForKey访问数组,就像您在此处尝试:
// the second objectForKey message is being sent to the array returned by the first objectForKey
[[dic objectForKey:@"d"] objectForKey:@"Email"];
但是,valueForKey在数组上工作,并在数组的每个元素上调用valueForKey后返回一个新数组:
NSArray *objects = [dict objectForKey:@"d"];
NSArray *emails = [objects valueForKey:@"Email"];
这将为您获取字典数组中的所有电子邮件地址。哇,我不知道valueForKey会这么做!这一定是最好的方法。出错:由于未捕获的异常“NSUnknownKeyException”终止应用程序,原因:“[valueForUndefinedKey:]:此类不符合键名的键值编码。'post您对数组的定义@property(强,非原子)NSArray*数组;thx对于您的答案,我尝试了您的解决方案,但现在我收到另一个错误[\u NSCFString count]:发送到实例0x6841840的选择器无法识别。您是否将数组定义为字符串?否,我没有。@property(强,非原子)NSArray*数组;将其更改为可变数组,因为您正在调整它。使用NSMutableArray
而不是NSArray
这是您定义数组的唯一位置吗?它是否也在类定义中定义?尝试使用(非原子,保留)
而不是(强,非原子)
我能想到的另一件事是您的[dic objectForKey:@“d”]正在返回字符串。
// the second objectForKey message is being sent to the array returned by the first objectForKey
[[dic objectForKey:@"d"] objectForKey:@"Email"];
NSArray *objects = [dict objectForKey:@"d"];
NSArray *emails = [objects valueForKey:@"Email"];