如何检索 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 值

当对象具有内部对象时如何将对象转换为 JSON

如何在 Android 的改造请求中传递 JSON 对象并检索 JSON 对象?

如何将键 2 的值检索到 NSString 中?

如何摆脱 NSString 中的标题和尾随空格