如何检索 NSString 中的 JSON 对象
Posted
技术标签:
【中文标题】如何检索 NSString 中的 JSON 对象【英文标题】:How to retrive JSON objects in a NSString [closed] 【发布时间】:2013-05-08 09:23:53 【问题描述】:我有一个类似的 JSON:-
author =
class = "pocketapptest.Author";
dateCreated = "2013-05-08T00:03:46Z";
firstName = Kurt;
id = 1;
lastName = Vonnegut;
lastUpdated = "2013-05-08T00:03:46Z";
;
class = "pocketapptest.Book";
dateCreated = "2013-05-08T00:03:46Z";
id = 1;
lastUpdated = "2013-05-08T00:03:46Z";
title = "Slaughterhouse Five";
我可以访问 dateceated / title as
NSString* title = [jsondata objectForKey:@"title"];
但是我如何存储名字/姓氏等。
【问题讨论】:
你的 json 无效 此外,解析 JSON 非常简单,并且已在此站点上被询问了数百次。我们不需要另一个关于如何解析 JSON 的问题。 可以通过jsondata[@"title"]或者jsondata[@"author"][@"firstname"]直接访问属性 [[jsonData objectForKey:@"author"] setObject:@"Twain" forKey:@"lastName"]; 【参考方案1】:这样试试,可以得到如下的值
NSString* firstName = [[jsondata objectForKey:@"author"]objectForKey:@"firstName"];
【讨论】:
@Sulabh:欢迎并接受答案。 @Sulabh:不需要太多,只需点击正确的标记。 如果我有大量这样的 JSON 对象,那么将每个值保存在特定数组中是否可以,使用 FOR LOOP 是的,您可以这样做,但您必须将 jsondata 对象替换为 [jsonArray objectAtIndex:i]。 @Sulabh 您可以将所有 json 对象添加到 NSArray 中,然后通过 objectAtIndex 循环访问它们【参考方案2】:我猜你可能只使用了两次jsondata objectForKey:
。就这样:
NSString* firstName = [[jsondata objectForKey:@"author"]objectForKey:@"firstName"];
希望对你有帮助
【讨论】:
【参考方案3】:您的JSON
无效。首先使用 有效的 JSON 。您可以检查您的 JSON 是否有效here
然后从 json 访问字符串对象。
希望对你有帮助。
【讨论】:
在任何 JSON 验证器工具中检查您的 json【参考方案4】:使用 ivars 创建一个类来存储来自 JSON 的数据
@interface MyDetails
@property(nonatomic, retain) NSString *class, *dateCreated, *firstName,*ID, *lastName, *lastUpdated;
@end
@implementation MyDetails
@synthesize class, dateCreated, firstName, ID, lastName, lastUpdated;
@end
为 mydetails 分配实例
MyDetails *mydetails = [MyDetails alloc]init];
mydetails.class = [[jsondata objectForKey:@"author"]objectForKey:@"class"];
mydetails.dateCreated = [[jsondata objectForKey:@"author"]objectForKey:@"dateCreated"];
mydetails.firstName = [[jsondata objectForKey:@"author"]objectForKey:@"firstName"];
mydetails.ID = [[jsondata objectForKey:@"author"]objectForKey:@"id"];
mydetails.lastName = [[jsondata objectForKey:@"author"]objectForKey:@"lastName"];
mydetails.lastUpdated = [[jsondata objectForKey:@"author"]objectForKey:@"lastUpdated"];
【讨论】:
嘿大力水手,这种方法似乎不错。 ,所以我有 10 个 JSON 数组,我可以存储它们并访问它,如果如何 NSMutableArray *myDetailsArray = [NSMutableArray alloc]init]; for() 创建一个 mutablearray 为 jsonarray 中的每个对象分配 MyDetails 填充 myDetail 并添加到可变数组然后释放 myDetail ....在 for 循环中执行此操作 我不确定这个 mydetails.dateCreated = [[jsondata objectForKey:@"author"]objectForKey:@"dateCreated"];将工作... JSON 没有日期文字。因此,如果您想调用 NSDate 方法,它可能会被解释为字符串并引发异常。 是的,它只会被解释为字符串,我们稍后可以将其转换为 NSDate,也不会有例外,因为“myDetails.dateCreated”也是一个 NSString .....以上是关于如何检索 NSString 中的 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何从 discord.js 中的 JSON 对象中检索消息作为对象?
尝试从 Android Studio 中的 json 对象中检索 json 值