zoukankan      html  css  js  c++  java
  • IOS 反射获取属性,序列化成JSON

    继上篇序列化成xml,这篇介绍如何序列化成JSON对象。

    只是稍有改动

    ConvertObjToJSON.h

    //
    //  ConvertObjToJSON.h
    // 
    //
    //  Created by Elliott on 13-3-5.
    //  Copyright (c) 2013年 Elliott. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface ConvertObjToJSON : NSObject
    
    +(NSString *)Convert:(id)obj;
    
    @end

    ConvertObjToJSON.m

    //
    //  ConvertObjToJSON.m
    //  
    //
    //  Created by Elliott on 13-3-5.
    //  Copyright (c) 2013年 Elliott. All rights reserved.
    //
    #import <objc/runtime.h>
    #import "ConvertObjToJSON.h"
    
    @implementation ConvertObjToJSON
    
    +(NSString *)Convert:(id)obj
    {
        unsigned int outCount, i;
        objc_property_t *properties = class_copyPropertyList([obj class], &outCount);
        NSString *xml=@"{";
        for(i = 0; i < outCount; i++) {
            objc_property_t property = properties[i];
            NSString *key=[[NSString alloc]initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
            id value=[obj valueForKey:key];
            
            if (value!=nil) {
                //IF NOT NSSTRING,LOOP!!!!!!
                if (![value isKindOfClass:[NSString class]]) {
                    xml=[xml stringByAppendingFormat:@"%@:%@,",key,[ConvertObjToJSON Convert:[obj valueForKey:key]]];
                }
                else
                {
                    xml=[xml stringByAppendingFormat:@"%@:'%@',",key,value];
                }
            }
            else
            {
                xml=[xml stringByAppendingFormat:@"%@:'%@',",key,@""];
            }
        }
        xml=[xml substringToIndex:xml.length-1];
        xml=[xml stringByAppendingString:@"}"];
        
        //NSLog(@"结果:%@",xml);
        
        free(properties);
        
        return xml;
    }
    @end

    调用方式和上一篇xml的一样。

    目前只支持NSSTRING和自定义类。

  • 相关阅读:
    P1007 独木桥
    P1789 【Mc生存】插火把
    P2658 汽车拉力比赛
    1959 拔河比赛
    P1936 水晶灯火灵
    websocket
    瀑布流布局
    Router
    图片占位
    单位
  • 原文地址:https://www.cnblogs.com/danye/p/2944524.html
Copyright © 2011-2022 走看看