objective-c json序列化异常

objective-c json序列化异常,objective-c,debugging,exception,Objective C,Debugging,Exception,这是一个由三部分组成的问题 在尝试序列化字典时,我不断收到一个obj_exception_throw错误-下面是引发异常的代码行: NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictJSONData options:NSJSONWritingPrettyPrinted error:&error]; 这是字典本身: PA = { "CUSTOMER_ID" = xxxxxxx;

这是一个由三部分组成的问题

在尝试序列化字典时,我不断收到一个obj_exception_throw错误-下面是引发异常的代码行:

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictJSONData options:NSJSONWritingPrettyPrinted error:&error];
这是字典本身:

PA =     {
        "CUSTOMER_ID" = xxxxxxx;
        "GROSS_GROWTH_NO_YF_FLU" = 39385;
        "GROSS_GROWTH_ONLINE_DISC" = 394;
        "GROSS_GROWTH_SALES" = 56500;
        "GROSS_PROJECTED_NO_YF_FLU" = 35805;
        "GROSS_PROJECTED_ONLINE_DISC" = 358;
        "GROSS_PROJECTED_SALES" = 52920;
        "GROSS_SALES" = 0;
        "GROSS_SALES_CUST_PRICE_LIST" = 0;
        "GROWTH_MATCH_REBATE_AMT" = 3509;
        "GROWTH_NET_SALES" = 56500;
        "GROWTH_NET_SALES_NO_YF_FLU" = 394;
        "GROWTH_PROJ_SALES_NO_YF_FLU" = 3509;
        "GROWTH_REBATE_AMT" = 3509;
        "GROWTH_REBATE_PCT" = 9;
        "MATCH_GRTH_REBATE_GRTH_SALES" = "";
        "MATCH_NET_SALES" = 49200;
        "MATCH_PROJ_SALES_NO_YF_FLU" = 35447;
        "MATCH_REBATE_AMT" = 3190;
        "MATCH_REBATE_NET_DISCOUNT_SLS" = "";
        "MTH_GRTH_RBT_GRTH_NET_DISC_SLS" = "";
        "NEW_PRICE_DISC_NET_DISC" = "";
        "ONLINE_DISCOUNT_PCT" = 1;
        "OPER_ID" = xxxxxx;
        "PA_CREATE_DT" = "2014-01-03 05:00:00 +0000";
        "PA_ID" = 0;
        "PA_NAME" = "Copy of 8";
        "PA_STATUS_ID" = 2;
        "PRICELIST_TYPE_ID" = 5;
        "PRICE_LIST_GROWTH_SALES" = "";
        "PRICE_LIST_PROJECTED_SALES" = "";
        "REBATE_ELG_PROD_COUNT" = 0;
        "SALES_ROSTER_ID" = 20016;
        "START_DT" = "2014-01-03 17:56:12 +0000";
        "STATUS_PRICE_LIST_NET_DISC_SLS" = "";
        "STATUS_PRICE_LIST_PROJ_SALES" = "";
        "TOTAL_GRTH_MATCH_REBATE_AMT" = "";
        "UPFRONT_DISCOUNT_PCT" = 0;
    };
    PRODUCTS =     (
                {
            "DISCOUNT_DOSE_PRICE" = 8;
            "DISCOUNT_UNIT_PRICE" = 80;
            "GROWTH_DOSES" = 0;
            "GROWTH_PROJECTED" = 0;
            "LIST_DOSE_PRICE" = 0;
            "OPER_ID" = 20016;
            "PA_PRODUCT_ID" = xxxxx;
            "PRODUCT_ID" = xxxxxx;
            "SALES_PROJECTED" = 0;
            "SUGGESTED_DOSES" = 0;
            "USER_SELECTED_DOSES" = 0;
        },
                {
            "DISCOUNT_DOSE_PRICE" = 8;
            "DISCOUNT_UNIT_PRICE" = 80;
            "GROWTH_DOSES" = 0;
            "GROWTH_PROJECTED" = 0;
            "LIST_DOSE_PRICE" = 0;
            "OPER_ID" = 20016;
            "PA_PRODUCT_ID" = xxxxx;
            "PRODUCT_ID" = xxxxx;
            "SALES_PROJECTED" = 0;
            "SUGGESTED_DOSES" = 0;
            "USER_SELECTED_DOSES" = 0;
        }
    );
}
好的,那么第1部分:知道为什么抛出异常了吗?我需要以不同的方式设置数据吗

第二部分:我不太了解为例外情况显示的信息,因此如果有人能用简单的术语为我将其分解,我将不胜感激

以下是引发异常时得到的结果:

当我点击例外

是否有某种类型的指南可以引导我了解我在这里看到的东西,因为这对我来说就像是曼陀罗语一样D

第三部分:为什么没有在@try中记录异常

非常感谢

编辑:这是在您无法查看文件时从异常中打印出来的内容:

0x1cb088a:  pushl  %ebp
0x1cb088b:  movl   %esp, %ebp
0x1cb088d:  pushl  %ebx
0x1cb088e:  pushl  %edi
0x1cb088f:  pushl  %esi
0x1cb0890:  subl   $2028, %esp
0x1cb0896:  calll  0x1cb089b                 ; objc_exception_throw + 17
0x1cb089b:  popl   %ebx
0x1cb089c:  movl   $16, (%esp)
0x1cb08a3:  calll  0x1cc3678                 ; symbol stub for: __cxa_allocate_exception
0x1cb08a8:  movl   %eax, %esi
0x1cb08aa:  movl   8(%ebp), %eax
0x1cb08ad:  movl   %eax, (%esp)
0x1cb08b0:  calll  *1722297(%ebx)
0x1cb08b6:  movl   %eax, %edi
0x1cb08b8:  movl   1721937(%ebx), %eax
0x1cb08be:  movl   %eax, 4(%esp)
0x1cb08c2:  movl   %edi, (%esp)
0x1cb08c5:  calll  0x1cc00a4                 ; objc_msgSend
0x1cb08ca:  movl   %edi, (%esi)
0x1cb08cc:  leal   1722253(%ebx), %eax
0x1cb08d2:  movl   %eax, 4(%esi)
0x1cb08d5:  movl   %edi, (%esp)
0x1cb08d8:  calll  0x1caee20                 ; object_getClassName
0x1cb08dd:  movl   %eax, 8(%esi)
0x1cb08e0:  xorl   %eax, %eax
0x1cb08e2:  testl  %edi, %edi
0x1cb08e4:  je     0x1cb08e8                 ; objc_exception_throw + 94
0x1cb08e6:  movl   (%edi), %eax
0x1cb08e8:  movl   %eax, 12(%esi)
0x1cb08eb:  movl   1718237(%ebx), %eax
0x1cb08f1:  movl   %eax, -2016(%ebp)
0x1cb08f7:  cmpb   $0, (%eax)
0x1cb08fa:  je     0x1cb091e                 ; objc_exception_throw + 148
0x1cb08fc:  movl   %edi, (%esp)
0x1cb08ff:  calll  0x1caee20                 ; object_getClassName
0x1cb0904:  movl   %eax, 12(%esp)
0x1cb0908:  movl   %edi, 8(%esp)
0x1cb090c:  movl   %esi, 4(%esp)
0x1cb0910:  leal   82373(%ebx), %eax
0x1cb0916:  movl   %eax, (%esp)
0x1cb0919:  calll  0x1cb047e                 ; _objc_inform
0x1cb091e:  movl   1718233(%ebx), %eax
0x1cb0924:  cmpb   $0, (%eax)
0x1cb0927:  je     0x1cb099e                 ; objc_exception_throw + 276
0x1cb0929:  movl   -2016(%ebp), %eax
0x1cb092f:  cmpb   $0, (%eax)
0x1cb0932:  jne    0x1cb0956                 ; objc_exception_throw + 204
0x1cb0934:  movl   %edi, (%esp)
0x1cb0937:  calll  0x1caee20                 ; object_getClassName
0x1cb093c:  movl   %eax, 12(%esp)
0x1cb0940:  movl   %edi, 8(%esp)
0x1cb0944:  movl   %esi, 4(%esp)
0x1cb0948:  leal   82373(%ebx), %eax
0x1cb094e:  movl   %eax, (%esp)
0x1cb0951:  calll  0x1cb047e                 ; _objc_inform
0x1cb0956:  leal   -2012(%ebp), %eax
0x1cb095c:  movl   %eax, (%esp)
0x1cb095f:  movl   $500, 4(%esp)
0x1cb0967:  calll  0x1cc3738                 ; symbol stub for: backtrace
0x1cb096c:  movl   %eax, -2016(%ebp)
0x1cb0972:  movl   1718245(%ebx), %eax
0x1cb0978:  movl   (%eax), %eax
0x1cb097a:  movl   %eax, (%esp)
0x1cb097d:  calll  0x1cc377a                 ; symbol stub for: fileno
0x1cb0982:  movl   %eax, 8(%esp)
0x1cb0986:  movl   -2016(%ebp), %eax
0x1cb098c:  movl   %eax, 4(%esp)
0x1cb0990:  leal   -2012(%ebp), %eax
0x1cb0996:  movl   %eax, (%esp)
0x1cb0999:  calll  0x1cc3744                 ; symbol stub for: backtrace_symbols_fd
0x1cb099e:  movl   %ebx, -2016(%ebp)
0x1cb09a4:  movl   %esi, %ebx
0x1cb09a6:  addl   $4, %esi
0x1cb09a9:  movl   %edi, (%esp)
0x1cb09ac:  nop    
0x1cb09ad:  nopl   (%eax)
0x1cb09b1:  movl   -2016(%ebp), %eax
0x1cb09b7:  leal   306(%eax), %eax
0x1cb09bd:  movl   %eax, 8(%esp)
0x1cb09c1:  movl   %esi, 4(%esp)
0x1cb09c5:  movl   %ebx, (%esp)
0x1cb09c8:  calll  0x1cc369c                 ; symbol stub for: __cxa_throw

在我看来,你好像在字典里输入了日期? 例如:

在进行json系列化之前,您可能希望将此类转换为字符串

例如:

NSString *stringDate = [NSString stringWithFormat:@"%@", nsdateDate];

当你点击异常框时,试着输入命令
po$eax
xxxxxxx
是你在某个文件中的文本、实际值,并将其视为JSON字典值吗?我看不懂那些截图。Post text.H2CO3-您是否右键单击图像并在另一个选项卡中查看?如果您打印异常内容,它可能会准确地告诉您出了什么问题。选择异常帧后,在调试窗口中键入
po$eax
。抛出异常方法的程序集对我们毫无帮助。@Zaph我怀疑字典转储会自动将其转换为一个漂亮的字符串。JSON没有日期类型,只有数字、字符串、布尔值、数组和对象(这只是一个字典)。所以它是一根弦,就是这样,该死,不知道我怎么会错过它。值得感谢的是,在JSON中传输日期的最常见方式是UNIX时间戳:
(long)([nsDateObject timeItervalSince1970]*1000)
。另一种常见的方法是。请注意,上面的
stringWithFormat
方法只是调用日期对象上的
description
的昂贵方法。
NSString *stringDate = [NSString stringWithFormat:@"%@", nsdateDate];