2014-10-27 156 views
0

我有一個字符串,然後我需要它作爲json,所以我可以解析它並獲取鍵的對象。NSString到字典?或json然後到字典?獲取字符串鍵的對象

例如,我需要一個數組中的ID的所有對象來顯示在一個表中。 我該如何處理字符串?

對此提出建議?

這裏的字符串:

{ 
    "COMMON": { 
    "RESULT_CD": "0000", 
    "RESULT_MSG": "SUCCESS", 
    "CATEGORY": "computing", 
    "SVC_ID": "7", 
    "TARGET": "list(VM)", 
    "REQUEST_DATE": "201410271741", 
    "PAGE_NO": 0, 
    "NUM_PER_PAGE": 0 
    }, 
    "DATA": { 
    "VM_LIST": [ 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000083", 
     "VM_ALIAS": "CV00900000083", 
     "VM_OPER_DESC": "Power On", 
     "MACHIN_STATUS_DESC": "[150748]success:virtual machine power on", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "2", 
     "MEM_SIZE_MB": "1024", 
     "VNIC_CNT": "1", 
     "OS_NAME": "CentOS_6.4_en_64" 
     }, 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000093", 
     "VM_ALIAS": "CV00900000093", 
     "VM_OPER_DESC": "Reboot", 
     "MACHIN_STATUS_DESC": "[150749]success:virtual machine reboot", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "1", 
     "MEM_SIZE_MB": "2048", 
     "VNIC_CNT": "1", 
     "OS_NAME": "Gentoo _2011-0 _en_64" 
     }, 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000096", 
     "VM_ALIAS": "CV00900000096", 
     "VM_OPER_DESC": "Vm Initialization", 
     "MACHIN_STATUS_DESC": "[163023]success:virtual machine running", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "2", 
     "MEM_SIZE_MB": "1024", 
     "VNIC_CNT": "1", 
     "OS_NAME": "OpenSuse_12.1_en_64" 
     } 
    ] 
    } 
} 

編輯:

下面是我能夠給谷歌。

NSDictionary *JSON = 
       [NSJSONSerialization JSONObjectWithData: [response dataUsingEncoding:NSUTF8StringEncoding] 
               options: NSJSONReadingMutableContainers 
                error:nil]; 

但是,比較字符串NSLog到JSON NSLog!

字符串:

{ 
    "COMMON": { 
    "RESULT_CD": "0000", 
    "RESULT_MSG": "SUCCESS", 
    "CATEGORY": "computing", 
    "SVC_ID": "7", 
    "TARGET": "list(VM)", 
    "REQUEST_DATE": "201410271757", 
    "PAGE_NO": 0, 
    "NUM_PER_PAGE": 0 
    }, 
    "DATA": { 
    "VM_LIST": [ 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000083", 
     "VM_ALIAS": "CV00900000083", 
     "VM_OPER_DESC": "Power On", 
     "MACHIN_STATUS_DESC": "[150748]success:virtual machine power on", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "2", 
     "MEM_SIZE_MB": "1024", 
     "VNIC_CNT": "1", 
     "OS_NAME": "CentOS_6.4_en_64" 
     }, 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000093", 
     "VM_ALIAS": "CV00900000093", 
     "VM_OPER_DESC": "Reboot", 
     "MACHIN_STATUS_DESC": "[150749]success:virtual machine reboot", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "1", 
     "MEM_SIZE_MB": "2048", 
     "VNIC_CNT": "1", 
     "OS_NAME": "Gentoo _2011-0 _en_64" 
     }, 
     { 
     "@SVC_ID": "7", 
     "ID": "VMSPE0000000096", 
     "VM_ALIAS": "CV00900000096", 
     "VM_OPER_DESC": "Vm Initialization", 
     "MACHIN_STATUS_DESC": "[163023]success:virtual machine running", 
     "USVC_DESC": "7/Running, No Change r/hurhurhur, Inc.", 
     "PURPOSE_NM": "Service_Default", 
     "VIRT_TYPE_DESC": "Para Virtualization", 
     "SERVER_STATUS_MSG": "VM running", 
     "VCPU_CNT": "2", 
     "MEM_SIZE_MB": "1024", 
     "VNIC_CNT": "1", 
     "OS_NAME": "OpenSuse_12.1_en_64" 
     } 
    ] 
    } 
} 

JSON:

{ 
    COMMON =  { 
     CATEGORY = computing; 
     "NUM_PER_PAGE" = 0; 
     "PAGE_NO" = 0; 
     "REQUEST_DATE" = 201410271757; 
     "RESULT_CD" = 0000; 
     "RESULT_MSG" = SUCCESS; 
     "SVC_ID" = 7; 
     TARGET = "list(VM)"; 
    }; 
    DATA =  { 
     "VM_LIST" =   (
         { 
       "@SVC_ID" = 7; 
       ID = VMSPE0000000083; 
       "MACHIN_STATUS_DESC" = "[150748]success:virtual machine power on"; 
       "MEM_SIZE_MB" = 1024; 
       "OS_NAME" = "CentOS_6.4_en_64"; 
       "PURPOSE_NM" = "Service_Default"; 
       "SERVER_STATUS_MSG" = "VM running"; 
       "USVC_DESC" = "7/Running, No Change r/hurhurhur, Inc."; 
       "VCPU_CNT" = 2; 
       "VIRT_TYPE_DESC" = "Para Virtualization"; 
       "VM_ALIAS" = CV00900000083; 
       "VM_OPER_DESC" = "Power On"; 
       "VNIC_CNT" = 1; 
      }, 
         { 
       "@SVC_ID" = 7; 
       ID = VMSPE0000000093; 
       "MACHIN_STATUS_DESC" = "[150749]success:virtual machine reboot"; 
       "MEM_SIZE_MB" = 2048; 
       "OS_NAME" = "Gentoo _2011-0 _en_64"; 
       "PURPOSE_NM" = "Service_Default"; 
       "SERVER_STATUS_MSG" = "VM running"; 
       "USVC_DESC" = "7/Running, No Change r/hurhurhur, Inc."; 
       "VCPU_CNT" = 1; 
       "VIRT_TYPE_DESC" = "Para Virtualization"; 
       "VM_ALIAS" = CV00900000093; 
       "VM_OPER_DESC" = Reboot; 
       "VNIC_CNT" = 1; 
      }, 
         { 
       "@SVC_ID" = 7; 
       ID = VMSPE0000000096; 
       "MACHIN_STATUS_DESC" = "[163023]success:virtual machine running"; 
       "MEM_SIZE_MB" = 1024; 
       "OS_NAME" = "OpenSuse_12.1_en_64"; 
       "PURPOSE_NM" = "Service_Default"; 
       "SERVER_STATUS_MSG" = "VM running"; 
       "USVC_DESC" = "7/Running, No Change r/hurhurhur, Inc."; 
       "VCPU_CNT" = 2; 
       "VIRT_TYPE_DESC" = "Para Virtualization"; 
       "VM_ALIAS" = CV00900000096; 
       "VM_OPER_DESC" = "Vm Initialization"; 
       "VNIC_CNT" = 1; 
      } 
     ); 
    }; 
} 

的JSON缺少的東西!

這是好嗎?

+1

你知道任何關於'NSJSONSerialization'嗎? – 2014-10-27 08:51:13

+0

...或關於谷歌,對此? – 2014-10-27 08:51:37

+0

請檢查編輯,謝謝 – 2014-10-27 09:03:39

回答

0

在上述字符串數組的第一家店,那麼你可以用下面將其轉換成JSONObject的

[NSJSONSerialization JSONObjectWithData:[yourArray dataUsingEncoding:NSUTF8StringEncoding] options:0 error:NULL] 
0

您可以使用內置的稱爲NSJSONSerialization的iOS功能的NSString轉換成JSON格式。因爲你必須將NSString轉換爲NSData。

// jsonString = your string 
NSError *err; 
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
id objectChecker = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err]; 

if ([objectChecker isKindOfClass:[NSArray class]]) 
{ 
    //your object is NSArray. 
} 
else if([objectChecker isKindOfClass:[NSDictionary class]]) 
{ 
    //your object is NSDictionary. 
} 
else 
{ 
    //your string doesn't contain proper json format. 
} 

也許這會幫助你。 :)