objective-c json序列化异常
这是一个由三部分组成的问题 在尝试序列化字典时,我不断收到一个obj_exception_throw错误-下面是引发异常的代码行: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;
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];