在本机 Tizen 中解析 JSON
Parsing JSON in native Tizen
我有一个本地 C 项目,我需要在其中解析一些 Json。根据我在 Tizen 文档中发现的内容,json-glibc 解析器包含在 SDK 中。所以我尝试使用它。这是一个创建解析器的最小程序,仅此而已。
#include <json-glib.h>
main(int argc, char *argv[])
{
JsonParser* jsonParser = NULL;
GError *error = NULL;
jsonParser = json_parser_new();
if(jsonParser == NULL) {
fputs("failed to create parser", stderr);
exit(7);
}
return 0;
}
在 Tizen 3.0 模拟器中,这工作正常。一旦我在 2.3.2 模拟器或 2.3.2 硬件上尝试它,它就会失败。令 ms 感到奇怪的是,这样的事情会 hardware/firmware 依赖。有谁知道我是否应该做些什么才能在任一版本的硬件上创建解析器?
更新10月6日2018年
我认为这是最近安装的 2.3.x 模拟器的错误。这只是一个假设,因为我最多只能尝试在新操作系统上进行全新安装。我唯一的其他假设是 2.3.x 模拟器需要运行的某些组件缺失且未记录为要求。
+-----------------------------------+------+--------+--------------------------+
| OS Version | Tizen|Studio | Result |
+-----------------------------------+------+--------+--------------------------+
| Ubuntu 16 LTS Clean Install | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 16 LTS Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Ubuntu 18 LTS Clean Install | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 18 LTS Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Mac OS X High Siera Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Mac OS X Movaje Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Windows 10 Creator's Edition | 2.3 | 2.5 | json_parser_new()== NULL |
| Windows 10 Creator's Edition | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 16 LTS Clean Install | 3.0 | 2.4 | success |
| Ubuntu 16 LTS Clean Install | 3.0 | 2.5 | success |
| Ubuntu 18 LTS Clean Install | 3.0 | 2.4 | success |
| Ubuntu 18 LTS Clean Install | 3.0 | 2.5 | success |
| Mac OS X High Siera Clean Install | 3.0 | 2.5 | success |
| Mac OS X Movaje Clean Install | 3.0 | 2.5 | success |
| Windows 10 Creator's Edition | 3.0 | 2.5 | success |
| Windows 10 Creator's Edition | 3.0 | 2.4 | success |
+-----------------------------------+---------------+--------------------------+
根据这些结果,人们会认为 Tizen 2.3 不受支持。但现在看来,以前安装过 Tizen Studio 的人现在可以成功执行相同的代码。
enter link description here我在 Tizen 开发者论坛上得到了问题的答案。
长话短说,Gear S3+ 和 Gear S2 使用不同版本的 GLIB。在 Gear S2 上使用的是 glib_init() 未调用,第一次尝试创建对象将失败。
在使用任何glib 库之前需要添加以下内容以避免此问题。
#if !GLIB_CHECK_VERSION(2, 35, 0)
g_type_init();
#endif
我有一个本地 C 项目,我需要在其中解析一些 Json。根据我在 Tizen 文档中发现的内容,json-glibc 解析器包含在 SDK 中。所以我尝试使用它。这是一个创建解析器的最小程序,仅此而已。
#include <json-glib.h>
main(int argc, char *argv[])
{
JsonParser* jsonParser = NULL;
GError *error = NULL;
jsonParser = json_parser_new();
if(jsonParser == NULL) {
fputs("failed to create parser", stderr);
exit(7);
}
return 0;
}
在 Tizen 3.0 模拟器中,这工作正常。一旦我在 2.3.2 模拟器或 2.3.2 硬件上尝试它,它就会失败。令 ms 感到奇怪的是,这样的事情会 hardware/firmware 依赖。有谁知道我是否应该做些什么才能在任一版本的硬件上创建解析器?
更新10月6日2018年
我认为这是最近安装的 2.3.x 模拟器的错误。这只是一个假设,因为我最多只能尝试在新操作系统上进行全新安装。我唯一的其他假设是 2.3.x 模拟器需要运行的某些组件缺失且未记录为要求。
+-----------------------------------+------+--------+--------------------------+
| OS Version | Tizen|Studio | Result |
+-----------------------------------+------+--------+--------------------------+
| Ubuntu 16 LTS Clean Install | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 16 LTS Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Ubuntu 18 LTS Clean Install | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 18 LTS Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Mac OS X High Siera Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Mac OS X Movaje Clean Install | 2.3 | 2.5 | json_parser_new()== NULL |
| Windows 10 Creator's Edition | 2.3 | 2.5 | json_parser_new()== NULL |
| Windows 10 Creator's Edition | 2.3 | 2.4 | json_parser_new()== NULL |
| Ubuntu 16 LTS Clean Install | 3.0 | 2.4 | success |
| Ubuntu 16 LTS Clean Install | 3.0 | 2.5 | success |
| Ubuntu 18 LTS Clean Install | 3.0 | 2.4 | success |
| Ubuntu 18 LTS Clean Install | 3.0 | 2.5 | success |
| Mac OS X High Siera Clean Install | 3.0 | 2.5 | success |
| Mac OS X Movaje Clean Install | 3.0 | 2.5 | success |
| Windows 10 Creator's Edition | 3.0 | 2.5 | success |
| Windows 10 Creator's Edition | 3.0 | 2.4 | success |
+-----------------------------------+---------------+--------------------------+
根据这些结果,人们会认为 Tizen 2.3 不受支持。但现在看来,以前安装过 Tizen Studio 的人现在可以成功执行相同的代码。
enter link description here我在 Tizen 开发者论坛上得到了问题的答案。
长话短说,Gear S3+ 和 Gear S2 使用不同版本的 GLIB。在 Gear S2 上使用的是 glib_init() 未调用,第一次尝试创建对象将失败。
在使用任何glib 库之前需要添加以下内容以避免此问题。
#if !GLIB_CHECK_VERSION(2, 35, 0)
g_type_init();
#endif