当我解析一个JSON时,我在NSArray中得到了以下结果
(
{
category = Allergies;
group = Allergies;
name = "Food Allergies";
option = "";
subGroup = "";
type = VARCHAR;
},
{
category = Allergies;
group = Allergies;
name = "Drug Allergies";
option = "";
subGroup = "";
type = VARCHAR;
},
{
category = Allergies;
group = "";
name = "Blood Group";
option = "[{\"id\":1,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"A+\"},{\"id\":2,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"A-\"},{\"id\":3,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"B+\"},{\"id\":4,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"B-\"},{\"id\":5,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"O+\"},{\"id\":6,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"O-\"},{\"id\":7,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"AB+\"},{\"id\":8,\"isDefault\":false,\"additionalOption\":false,\"optionName\":\"AB-\"}]";
subGroup = "";
type = SINGLESELECT;
}
)
现在,当我试图为键"选项"
取价值时
[array valueForKey:@"option"]objectAtIndex:indexPath.row];
我得到了以下结果
[{"id":1,"isDefault":false,"additionalOption":false,"optionName":"A+"},{"id":2,"isDefault":false,"additionalOption":false,"optionName":"A-"},{"id":3,"isDefault":false,"additionalOption":false,"optionName":"B+"},{"id":4,"isDefault":false,"additionalOption":false,"optionName":"B-"},{"id":5,"isDefault":false,"additionalOption":false,"optionName":"O+"},{"id":6,"isDefault":false,"additionalOption":false,"optionName":"O-"},{"id":7,"isDefault":false,"additionalOption":false,"optionName":"AB+"},{"id":8,"isDefault":false,"additionalOption":false,"optionName":"AB-"}]
但是当试图访问" optionName"喜欢以下格式
[optionArray valueForKey:@" optionName"]; 然后我收到了这个错误
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0x10d8638a0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key optionName.'
请帮我解决这个问题..
答案 0 :(得分:1)
假设您使用的是ios 5或更高版本,则内置JSON序列化:
NSArray *json = [NSJSONSerialization
JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding]
options:kNilOptions
error:&error];
在ios5之前,您可以使用SBJSON实现相同的目标:
NSArray *jsonObjects = [jsonParser objectWithString:string error:&error];
答案 1 :(得分:0)
使用此方法
@api.multi
def scheduler(self):
view_id = self.env.ref('ragtimeorder.view_week_form').id
# context = self._context.copy()
return {
'name':_('SCHEDULE RATECARD'),
'view_type': 'form',
'view_mode': 'form',
'views': [(view_id, 'form'), ],
'res_model': 'week',
# 'context': self._context,
'type': 'ir.actions.act_window',
'target': 'new',
'flags': {'action_buttons': True},
}
并像这样打电话
myHashes = {}
users = ["user1", "user2", "user3"]
resources = ["resource1", "resource2", "resource3"]
users.each.with_index do |user, i|
myHashes["#{user}@#{resources[i]}"] = {}
end
选项名称----&gt; A + 强>
答案 2 :(得分:0)
尝试使用下面的转换为数组
NSArray * array =[NSJSONSerialization JSONObjectWithData:[[NSString stringWithFormat:@"%@",@"YOUR STRING"] dataUsingEncoding:NSUTF8StringEncoding]options: NSJSONReadingMutableContainers error:nil];
尝试使用以下代码将其转换为NSArray
{{1}}
答案 3 :(得分:0)
你有一个复杂的对象图。&#34;看起来你的外部对象是一个数组,里面有你的字典。
如果optionArray
是NSArray,那么如果您尝试将其视为字典,它会准确地为您报告错误。
您的代码:
[array valueForKey:@"option"]objectAtIndex:indexPath.row];
正在这样做(尽管您正在使用KVC,您应该直接使用数组和字典方法。)
您的代码应该是这样的:
NSDictionary* aDict = array[indexPath.row];
NSString *optionString = aDict[@"option];
答案 4 :(得分:0)
不使用像SBJson这样的第三方
NSString *optionString = [[array valueForKey:@"option"]objectAtIndex:indexPath.row];
实际上你将optionString作为json String获取,所以你必须解析它然后像这样使用
NSData *data = [optionString dataUsingEncoding:NSUTF8StringEncoding];
NSArray * optionArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",[optionArray valueForKey:@"optionName"]);