微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用YAJL库读取Watson Visual Recognition JSON响应?

如何解决如何使用YAJL库读取Watson Visual Recognition JSON响应?

如何正确使用Scott Klement的YAJL库来读取Watson Visual Recognition的响应? json对象如下所示:

{
"images": [
    {
        "classifiers": [
            {
                "classifier_id": "default","name": "default","classes": [
                    {
                        "class": "outside mirror","score": 0.85,"type_hierarchy": "/reflector/mirror/outside mirror"
                    },{
                        "class": "mirror","score": 0.998
                    },{
                        "class": "reflector",{
                        "class": "car mirror","score": 0.764,"type_hierarchy": "/reflector/mirror/car mirror"
                    },{
                        "class": "rearview mirror","score": 0.714,"type_hierarchy": "/reflector/mirror/rearview mirror"
                    },{
                        "class": "ash grey color","score": 0.778
                    },{
                        "class": "bottle green color","score": 0.532
                    }
                ]
            }
        ],"source_url": "https://.jpg","resolved_url": "https://.jpg"
    }
],"images_processed": 1,"custom_classes": 0
}

现在,我想从具有类score_hierarchy的classes对象中获取值。 我怎样才能进入类数组? 获取图像对象后,我找不到分类器以继续...

docNode = yajl_stmf_load_tree( temporaryFile: errMsg);
  if errMsg <> '';
    return imageClasses;
  endif;

  i = 0;

  images = YAJL_OBJECT_FIND(docNode: 'images');

  dow yajl_array_loop(images: i: node);

    // Todo: How to continue to get "classifiers" object?

    j = 0;
    dow yajl_object_loop(node:j:key:val);

      select;
      when key = 'classes';
        imageClasses(i).class = yajl_get_string(val);
      when key = 'score';
        imageClasses(i).score = yajl_get_number(val);
      when key = 'type_hierarchy';
        imageClasses(i).typeHierarchy = yajl_get_string(val);
      endsl;

    enddo;

  enddo;

  yajl_tree_free(docNode);

解决方法

我认为应该这样做:

 docNode = yajl_stmf_load_tree( temporaryFile: errMsg);
  if errMsg <> '';
    return imageClasses;
  endif;

  i = 0;

  images = YAJL_OBJECT_FIND(docNode: 'images');

  dow yajl_array_loop(images: i: node);

    classifiers = YAJL_OBJECT_FIND(node: 'classifiers');

    j = 0;
    dow yajl_object_loop(classifiers:j:key:val);

      select;
      when key = 'classes';
        imageClasses(i).class = yajl_get_string(val);
      when key = 'score';
        imageClasses(i).score = yajl_get_number(val);
      when key = 'type_hierarchy';
        imageClasses(i).typeHierarchy = yajl_get_string(val);
      endsl;

    enddo;

  enddo;

  yajl_tree_free(docNode);

如果需要更多示例,此页面提供了更多信息: https://www.fieldexit.com/forum/display?threadid=199

,

这是现在可以使用的代码:

images = YAJL_OBJECT_FIND(docNode: 'images'); 
i = 0;

dow yajl_array_loop(images: i: node);

  classifiers = YAJL_OBJECT_FIND(node: 'classifiers');

  k = 0;
  dow yajl_array_loop(classifiers: k: node);

    classes = YAJL_OBJECT_FIND(node: 'classes');

    j = 0;
    dow yajl_array_loop(classes: j: node);

      val = YAJL_object_find(node:'class');
      imageClasses.classes(j).class = yajl_get_string(val);

      val = YAJL_object_find(node:'score');
      imageClasses.classes(j).score = yajl_get_number(val);

      val = YAJL_object_find(node:'type_hierarchy');
      imageClasses.classes(j).typeHierarchy = yajl_get_string(val);

  enddo;

 enddo;

enddo; 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?