【问题标题】:NSString to dictionary? or to json then to dictionary? Getting objects of key for a stringNSString 到字典?或者到 json 然后到字典?获取字符串的键对象
【发布时间】:2014-10-27 08:49:27
【问题描述】:

我有一个字符串,然后我需要它作为 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 缺少东西!!

这样好吗???

【问题讨论】:

  • 你知道NSJSONSerialization吗?
  • ...或者关于谷歌,就此而言?
  • 请检查编辑,谢谢
  • 您的 JSON 已成功解析为 NSDictionary。您在控制台中看到的只是 NSDictionary-description(字符串表示形式),它看起来不像 JSON。

标签: ios arrays json parsing dictionary


【解决方案1】:

首先将上面的字符串存储在数组中,然后您可以使用以下将其转换为jsonobject

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

【讨论】:

    【解决方案2】:

    您可以使用称为 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.
    }
    

    也许这会对你有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2013-04-20
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      相关资源
      最近更新 更多