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

马罗克

我有一个像这样的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模型并不复杂,您可以轻松地应用它。

#import <Foundation/Foundation.h>

@interface Person : NSObject

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

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

@end

#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

这篇文章使用JSON加载Objective-C对象是不错的起点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将Json数组解析为C#中的类

来自分类Dev

将 json 解析为类失败

来自分类Dev

FileUtils没有显示建议为硒WebDriver中的屏幕快照功能导入预定义的类

来自分类Dev

如何将预定义的类对象添加到列表中?

来自分类Dev

将预定义的颜色添加到简单的 C++ 颜色类

来自分类Dev

将GoLang中的JSON解析为struct

来自分类Dev

将 JSON 解析为 Dart 中的列表

来自分类Dev

将 Swift 中的 JSON 解析为类数组

来自分类Dev

将 json 解析为 C# 中的通用列表

来自分类Dev

如何使用 Adobe 预定义模板在 C# 中为 PDF 添加图章?

来自分类Dev

将Word预定义样式应用于C#中的文本

来自分类Dev

将文本文件C ++中的特定单词替换为预定义的值

来自分类Dev

将 JSON 解析为没有 JsonProperty 的类

来自分类Dev

公开:如何将JSON解析为Entity类

来自分类Java

如何使用Jackson将Color java类解析为JSON?

来自分类Dev

尝试将json解析为类对象失败

来自分类Dev

将 Json 解析为模式生成的一组类

来自分类Dev

将JSON解析为自定义的“树状”文件结构

来自分类Dev

在ruby中,如何将json中包含的json数组解析为类?

来自分类Dev

使用Objective-C将时间戳解析为日期和时间时出现的问题

来自分类Dev

通过jQUERY将URL中的JSON数据解析为HTML

来自分类Dev

将json解析为Gson中的字符串

来自分类Dev

将 json 解析为模型在颤振中失败

来自分类Java

将Markdown文件解析为Java中的JSON对象

来自分类Dev

将嵌套的JSON解析为R中的数据框

来自分类Dev

将 JSON 中的函数解析为静态值

来自分类Dev

将API文件中的JSON输出解析为CSV

来自分类Dev

将JSON文件解析为PHP中的数组

来自分类Dev

在Swift 3中将JSON对象解析为NSArray

Related 相关文章

热门标签

归档