- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
摘要。基于一些benchmarks ,我选择了yajl-objc用于我的 iPhone JSON 解析器。我正在使用任意自定义类(一个 NSNumber 和两个 NSString 属性)对其进行测试。如果我创建了一个具有与类属性匹配的键值对的 NSDictionary,我可以使用 [dictionary yajl_JSON]
对字典进行编码。当我尝试使用 [custom yajl_JSON]
直接编码自定义类的实例时,出现以下编译器错误:
由于未捕获的异常“YAJLParsingUnsupportedException”而终止应用程序,原因:“类型(自定义)的对象必须实现 dataUsingEncoding:才能解析”
。
即使我实现了 - (id)JSON
(如 yajl-objc readme 中的建议),我也收到错误。我知道问题出在我的代码上,而不是库上。我就是不明白我做错了什么。
详细信息。我的 Custom.h:
#import
@interface Custom : NSObject {
NSString *name;
NSNumber *number;
NSString *text;
}
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSNumber *number;
@property (nonatomic, copy) NSString *text;
@end
在 Custom.m 中,我根据 yajl-obj 文档定义了一个 - (id)JSON
方法:
- (id)JSON
{
NSDictionary *jsonDictionary =
[[[NSMutableDictionary alloc] init] autorelease];
[jsonDictionary setValue:name forKey:@"name"];
[jsonDictionary setValue:number forKey:@"number"];
[jsonDictionary setValue:text forKey:@"text"];
return jsonDictionary;
}
创建一个键值匹配的字典并对其进行编码工作正常:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:self.custom.name forKey:@"name"];
[dict setValue:self.custom.number forKey:@"number"];
[dict setValue:self.custom.text forKey:@"text"];
NSString *JSONString = [dict yajl_JSON];
但是当我调用 NSString* JSONString = [custom yajl_JSON]
;这是我得到的编译器错误和堆栈跟踪:
*** Terminating app due to uncaught exception 'YAJLParsingUnsupportedException', reason: 'Object of type (Custom) must implement dataUsingEncoding: to be parsed'
*** Call stack at first throw:
(
0 CoreFoundation 0x0266bb99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x027bb40e objc_exception_throw + 47
2 CoreFoundation 0x02624238 +[NSException raise:format:arguments:] + 136
3 CoreFoundation 0x026241aa +[NSException raise:format:] + 58
4 TestCustomFileFormat 0x00005151 -[NSObject(YAJL) yajl_JSONWithOptions:error:] + 206
5 TestCustomFileFormat 0x00005212 -[NSObject(YAJL) yajl_JSON:] + 49
6 TestCustomFileFormat 0x00005249 -[NSObject(YAJL) yajl_JSON] + 49
7 TestCustomFileFormat 0x00002eba -[TestViewController loadInstruction] + 758
8 TestCustomFileFormat 0x00002aa5 -[TestViewController viewDidLoad] + 77
9 UIKit 0x0037585a -[UIViewController view] + 179
10 TestCustomFileFormat 0x00002377 -[TestCustomFileFormatAppDelegate application:didFinishLaunchingWithOptions:] + 112
11 UIKit 0x002cc6a7 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163
12 UIKit 0x002ceb30 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 346
13 UIKit 0x002d8b6c -[UIApplication handleEvent:withNewEvent:] + 1958
14 UIKit 0x002d12bc -[UIApplication sendEvent:] + 71
15 UIKit 0x002d613f _UIApplicationHandleEvent + 7672
16 GraphicsServices 0x02f4b81e PurpleEventCallback + 1578
17 CoreFoundation 0x0264cff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
18 CoreFoundation 0x025ad807 __CFRunLoopDoSource1 + 215
19 CoreFoundation 0x025aaa93 __CFRunLoopRun + 979
20 CoreFoundation 0x025aa350 CFRunLoopRunSpecific + 208
21 CoreFoundation 0x025aa271 CFRunLoopRunInMode + 97
22 UIKit 0x002ce3ed -[UIApplication _run] + 625
23 UIKit 0x002da272 UIApplicationMain + 1160
24 TestCustomFileFormat 0x000022e4 main + 102
25 TestCustomFileFormat 0x00002275 start + 53
)
terminate called after throwing an instance of 'NSException'
作为回应,我尝试遵循 NSCoding,使用 NSKeyedArchiver 创建类实例的 NSMutableData 表示形式并调用 [data yajl_JSON]
,但这也不起作用。
我知道我错过了一些简单的事情,但我太愚蠢了,无法弄清楚。
最佳答案
你的做法是错误的。要从对象创建 JSON 字符串,请使用yajl_JSONString
。 yail_JSON
用于获取字符串(或 NSData
对象或可以存档的对象)并将其解析为对象。
关于iphone - 使用 yajl-objc 编码自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628689/
我试图让 Jekyll 在 Windows 上工作,但没有成功。这是我第一次安装/使用 Ruby。 Ruby 版本:ruby 2.0.0p0 (2013-02-24) [i386-mingw32] (
有人有 YAJL Json 解析框架来与 iPhone 配合使用吗?如果您有的话,您可以发布有关如何链接到它的简单说明。 我想将它与 MGTwitterEngine 框架一起使用。 目前我收到这些错误
菜鸟,我正在尝试安装 octopress,但是当我运行 rbenv exec bundle install 时出现此错误。 Gem::Ext::BuildError: ERROR: Failed to
摘要。基于一些benchmarks ,我选择了yajl-objc用于我的 iPhone JSON 解析器。我正在使用任意自定义类(一个 NSNumber 和两个 NSString 属性)对其进行测试。
如何删除和更新 yajl C 库中的对象? 我在任何地方都找不到这个解决方案 最佳答案 您需要手动更新库文件。对此没有特定的方法或技术。 关于c - 如何删除和更新 yajl C 库中的对象?,我们在
我已经使用 yajl 玩了几天,非常喜欢树节点模型。解析完成后,您将获得 json 文件的结构,然后可以浏览它。就像这里的例子: http://lloyd.github.io/yajl/yajl-2.
当我运行时: sudo gem install yajl-ruby 我看到错误: Building native extensions. This could take a while... ERR
我已经在 ubuntu 10.04 安装上安装了 yajl、libyajl-dev 和 yajl-ruby gem。 我将 gem 添加到 2.3.8 ruby on rails 安装中,因为 2
Twitter 流 API 返回 JSON 块,但我的 YAJL 解析器在第一个之后停止。我想这是因为每个 JSON 块都是独立的(即:不在全局数组中),所以 YAJL 无法知道它没有完成。 我该如何
在我的 iPhone 应用程序中,我尝试使用 JSON 库 (YAJL) 创建一个如下格式的 JSON 字符串: {"user": {"name":"Jon", "username":"jon22
我正在尝试解析 JSON 文件中的数组,如下所示 { "val": [5,6] } 使用以下代码,改编自库中包含的 parse_config.c, char errbuf[1024]; yaj
我正在尝试安装 ruby gem“yajl ruby”。我正在运行 Mac OS 10.7.4 和 Ruby 1.8.7(2011-12-28 补丁级别 357)[universal-darw
嘿,我正在尝试获取 http://github.com/gabriel/yajl-objc在 iOS 上工作。它说“将 YAJLIOS.framework 添加到您的项目”,但我不确定如何获取/构建
我在使用名为“indeed”的 gem 时遇到问题。我正在使用 ruby on rails 创建一个工作应用程序,自从我引入了这个 gem 以来,每次我尝试使用服务器 Rails 时,我都会收到此
使用 YAJL Ruby 解析我得到以下错误 2.0.0-p0 :048 > Yajl::Parser.parse "#{resp.body}" Yajl::ParseError: lexical
不过,我已经通过 gem 'yajl-ruby', '~> 1.1.0' 在我的 Gemfile 中包含了 yajl gem在我的商店 Controller 中调用 parser = Yajl::Pa
首先,对不起我的英语......:) 我正在使用 YAJL 框架 http://github.com/gabriel/yajl-objc 我的文件如下所示: [ [ 3753700, { "alti
我一定是做错了什么……或者这可能是 YAJL 中的错误,但我对此深表怀疑。我无法从 json 对象中检索第一个元素。我回到 YAJL 源以使用示例 parse_config.c 对此进行测试,但它也失
我有一个包含 JSON 散列的大文件 (>50Mb)。像这样的东西: { "obj1": { "key1": "val1", "key2": "val2" }, "obj2
我尝试使用 yajl 2.0.4(使用 yajl_tree.h)解析 JSON 文件,但在检测找到的值是否是数组时遇到一些问题(即使我使用 YAJL_IS_ARRAY,似乎类型字段未设置。 这是我的
我是一名优秀的程序员,十分优秀!