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

ios – 将JSON解析为Objective C中的预定义类,第1张

概述我有一个像json字符串: { "a":"val1", "b":"val2", "c":"val3"} 我有一个客观的C头文件,如: @interface TestItem : NSObject@property NSString *a;@property NSString *b;@property NSString *c;@end 我可以解析Json并获取TestIte 我有一个像Json字符串:
{  "a":"val1","b":"val2","c":"val3"}

我有一个客观的C头文件,如:

@interface TestItem : NSObject@property Nsstring *a;@property Nsstring *b;@property Nsstring *c;@end

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

我知道如何将Json解析为字典,但我想在一个类中解析它(类似于gson在Java中所做的那样).

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

person.h

#import <Foundation/Foundation.h>@interface Person : NSObject@property Nsstring *personname;@property Nsstring *personMIDdlename;@property Nsstring *personLastname;- (instancetype)initWithJsONString:(Nsstring *)JsONString;@end

person.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中的预定义类全部内容,希望文章能够帮你解决ios – 将JSON解析为Objective C中的预定义类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存