在本机 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