gpt4 book ai didi

ios - 将 JSON 解析为 Objective C 中的预定义类

转载 作者:可可西里 更新时间:2023-11-01 03:38:09 24 4
gpt4 key购买 nike

我有一个像这样的 json 字符串:

{
"a":"val1",
"b":"val2",
"c":"val3"
}

我有一个 Objective-C 头文件,例如:

@interface TestItem : NSObject

@property NSString *a;
@property NSString *b;
@property NSString *c;

@end

我可以解析 Json 并获取 TestItem 类的实例吗?

我知道如何将 json 解析成字典,但我想在一个类中解析它(类似于 gson 在 Java 中所做的)。

最佳答案

您始终可以使用键值编码将 JSON 反序列化(解析)到您的类,而不是直接使用字典。键值编码是 Cocoa 的一个很棒的特性,它允许您在运行时通过名称访问类的属性和实例变量。正如我所见,您的 JSON 模型并不复杂,您可以轻松应用它。

人.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property NSString *personName;
@property NSString *personMiddleName;
@property NSString *personLastname;

- (instancetype)initWithJSONString:(NSString *)JSONString;

@end

人.m

#import "Person.h"

@implementation Person

- (instancetype)init
{
self = [super init];
if (self) {

}
return self;
}

- (instancetype)initWithJSONString:(NSString *)JSONString
{
self = [super init];
if (self) {

NSError *error = nil;
NSData *JSONData = [JSONString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:&error];

if (!error && JSONDictionary) {

//Loop method
for (NSString* key in JSONDictionary) {
[self setValue:[JSONDictionary valueForKey:key] forKey:key];
}
// Instead of Loop method you can also use:
// thanks @sapi for good catch and warning.
// [self setValuesForKeysWithDictionary:JSONDictionary];
}
}
return self;
}

@end

appDelegate.m

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

// JSON String
NSString *JSONStr = @"{ \"personName\":\"MyName\", \"personMiddleName\":\"MyMiddleName\", \"personLastname\":\"MyLastName\" }";

// Init custom class
Person *person = [[Person alloc] initWithJSONString:JSONStr];

// Here we can print out all of custom object properties.
NSLog(@"%@", person.personName); //Print MyName
NSLog(@"%@", person.personMiddleName); //Print MyMiddleName
NSLog(@"%@", person.personLastname); //Print MyLastName
}

@end

文章using JSON to load Objective-C objects好的起点。

关于ios - 将 JSON 解析为 Objective C 中的预定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com