- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一定是做错了什么……或者这可能是 YAJL 中的错误,但我对此深表怀疑。我无法从 json 对象中检索第一个元素。我回到 YAJL 源以使用示例 parse_config.c 对此进行测试,但它也失败了。
使用示例.config
/*
* The configuration file for Yahoo! BrowserPlus, included in the YAJL
* tree as a sample configuration file for parsing.
*
* This is the configuration file for BrowserPlus
*/
{
// The type of build this is, which is accessible to JavaScript via
// BrowserPlus.getPlatformInfo();
// Different build types should only differ in signatures accepted
// (BrowserPlus.crt) and configured distribution servers.
"BuildType": "ephemeral",
// the base url for the "primary" distribution server. This server will
// be the single source of truth for Permissions, and will used to
// attain services
"DistServer": "http://browserplus.yahoo.com",
// An array of "secondary" distribution servers, which will be checked
// in order for services if the primary server has no components
// available which match an issued require statement.
"SecondaryDistServers": [
"http://first.fictional.server",
"http://second.fictional.server"
],
// Logging Setup
"Logging" :
{
// Log level. Values: "debug"|"info"|"warn"|"error"|"fatal"|"off"
"level": "BP_LOG_LEVEL",
// Destination. Values: "file"|"console"|"win32"
"dest": "BP_LOG_DEST",
// Log message layout. Values: "standard"|"source"|"raw"
"layout": "standard",
// Time format. Values: "utc"|"local"|"msec"
"timeFormat": "utc",
// File size in KB which will trigger a rollover
"fileRolloverKB": 2048,
// Whether to send file logging from each service to a distinct file.
// Values: "combined"|"separate"
"serviceLogMode": "combined"
},
// Daemon setup
// Syntax: "Options": "option1 option2 etc"
// -fg run in foreground, log to console
"Options":"",
// Auto-shutdown daemon if idle for this time. Use 0 for no auto-shutdown.
"MaxIdleSecs": 5,
// At the end of each BrowserPlus session a small web request is made
// to yahoo to indicate that BrowserPlus was used. This report includes
// * information about the browser being used
// * an "installation id", which is a unique token that's generated
// the first time BrowserPlus runs.
//
// By design, there is *no information* in this request that gives
// Yahoo! information about:
// a) the site that the user is visiting (see, "url": false)
// b) who the user is (the installation token cannot be tracked to a
// specific user).
//
// This information is primarily captured to help Yahoo! understand
// adoption and usage of the BrowserPlus platform.
"UsageReporting":
{
"enabled": true,
"url": false,
"id": true
},
// "Breakpoints" is an array of strings holding named breakpoints.
// Platform code checks for specific entries at certain key points, and if
// a matching entry is found here a DebugBreak will be performed.
// For developers with Visual Studio installed, the DebugBreak will cause an
// opportunity to perform just-in-time attachment of an existing or new
// debugger instance.
// The currently-defined breakpoints are listed below:
// runServiceProcess - A DebugBreak is performed in the service
// "harness" just prior to service load.
// ax.FinalConstruct - A DebugBreak is performed at entry to
// FinalConstruct of the ActiveX plugin.
// PluginInit - Very early in the NPAPI plugin initialization.
// A wonderful spot to stop and set more
// breakpoints.
//"Breakpoints": ["runServiceProcess"],
// How often we check for service updates. We guarantee at least this
// much time will pass between checks, though the true time may be
// much more if sites which use browserplus are not visited.
// The time is in seconds.
"ServiceUpdatePollPeriod": 86400
}
我尝试检索“BuildType”<-- JSON 对象的第一个元素。
我更改了 parse_config.c 文件来执行此操作...这是代码:
int
main(void)
{
size_t rd;
yajl_val node;
char errbuf[1024];
/* null plug buffers */
fileData[0] = errbuf[0] = 0;
/* read the entire config file */
rd = fread((void *) fileData, 1, sizeof(fileData) - 1, stdin);
/* file read error handling */
if (rd == 0 && !feof(stdin)) {
fprintf(stderr, "error encountered on file read\n");
return 1;
} else if (rd >= sizeof(fileData) - 1) {
fprintf(stderr, "config file too big\n");
return 1;
}
/* we have the whole config file in memory. let's parse it ... */
node = yajl_tree_parse((const char *) fileData, errbuf, sizeof(errbuf));
/* parse error handling */
if (node == NULL) {
fprintf(stderr, "parse_error: ");
if (strlen(errbuf)) fprintf(stderr, " %s", errbuf);
else fprintf(stderr, "unknown error");
fprintf(stderr, "\n");
return 1;
}
/* ... and extract a nested value from the config file */
{
//const char * path[] = { "Logging", "timeFormat", (const char *) 0 };
注意:如果我尝试获取“DistServer”,它工作正常,但“BuildType”返回 NULL。
const char * path[] = { "BuildType", (const char *) 0 };
//const char * path[] = { "DistServer", (const char *) 0 };
yajl_val v = yajl_tree_get(node, path, yajl_t_string);
if (v) printf("%s: %s\n", path[0], YAJL_GET_STRING(v));
else printf("no such node: %s\n", path[0] );
//if (v) printf("%s/%s: %s\n", path[0], path[1], YAJL_GET_STRING(v));
//else printf("no such node: %s/%s\n", path[0], path[1]);
}
yajl_tree_free(node);
return 0;
}
我使用的是最新的 YAJL 版本:2.0.2。
提前致谢!
编辑:
这是我的命令输出:
./parse_config < ../../example/sample.config
no such node: BuildType
请注意,我正在运行的 parse_config 位于 build/example 目录中
我的 gcc 版本是:gcc 版本 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
编辑 2作为记录,这是 YAJL 附带的示例代码。我故意使用它而不是我自己的代码来确保问题不仅仅与我的应用程序有关。同时,我通过使用库提供的回调机制和使用
解决了这个问题yajl_parse()
and
yajl_complete_parse()
但我仍然想知道为什么原始代码不起作用。
最佳答案
我刚刚遇到了同样的错误,使用的是 2.0.2 版。它似乎是 yajl 中的错误并已在 github 中修复(“验证 yajl_tree_get 中正确对象的长度”,提交 9c2948a33165c650122d131f31140c15321908f5)。
我已经应用了这个补丁,现在我可以很好地阅读第一个项目了。
关于c - 在 C 中使用 YAJL 解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309992/
我试图让 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,似乎类型字段未设置。 这是我的
我是一名优秀的程序员,十分优秀!