首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSJSONSerialization创建垃圾

NSJSONSerialization创建垃圾
EN

Stack Overflow用户
提问于 2016-01-16 11:58:19
回答 1查看 261关注 0票数 0

我在使用NSString创建NSDictionary的-representation (JSON-string)时遇到了一些问题。我以前使用过JSONKit,但是由于它在iOS9 (和崩溃)中不受欢迎,所以我改用了NSJSONSerialization

这是我的密码:

代码语言:javascript
复制
// `userSettings` will be of type NSMutableDictionary*

NSData* data= [NSJSONSerialization dataWithJSONObject:userSettings options:0 error:&error];
NSString* settingsString= [NSString stringWithUTF8String:data.bytes];

currentUser.settings= settingsString;   // NSString* property

现在,有时,这段代码可以工作,但有时settingsString将是nil。当我检查调试器中的数据对象时,bytes属性显示JSON-字符串,后面跟着一些随机垃圾,如下所示:

代码语言:javascript
复制
1 = 0x00007ff1ba814000 "{\"residua
...
lculatePlanned\":\"0\",\"wizardUserId\":\"\"}UITextColor\x91UISystemColorName\x94UIBaselineAdjustment\x8cUISystemFont\x89NS.intval\x8eUIShadowOffset\x94UIAutoresizeSubviews\x8dUIContentMode\x85NSRGB\x8aUIFontName\x8bUITextLabel\x8eNSInlinedValue\x91UIDetailTextLabel\x99UIUserInteractionDisabled\x9dUITableCellBackgroundColorSet\x94UINibEncoderEmptyKey\x87NSWhite\x8cNSColorSpace\x8fUITextAlignment\xa3UINibAccessibilityConfigurationsKey\x92UIAutoresizingMask\x99UIProxiedObjectIdentifier\x87UIAlpha\x87UIWhite\x9aUIFontDescriptorAttributes\x8cUIFontTraits\x86NSSize\x95UIColorComponentCount\x91UIMinimumFontSize\x86UIText\x96UIMultipleTouchEnabled\x8dUIDestination\x94UIMi..."
                                             ^ start of garbage after end of dictionary

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-16 12:34:15

不要使用+ stringWithUTF8String:,它依赖于一个以字节为零结尾的C数组,而且偶然地只有一个空终止符,而且它可能在您期望的字符结束后很久。

相反,请使用:

代码语言:javascript
复制
- (instancetype)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

例如:

代码语言:javascript
复制
NSString *settingsString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34826683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档