如何在谓词中使用prolog dict的键值?

时间:2015-12-14 18:30:54

标签: json dictionary attributes prolog

我有一个简单的问题,我在寻找答案时遇到了很多麻烦。

我正在构建一个读取json的api,此刻它成功地将json转换为带有http_read_json_dict的dict。问题是,我不知道如何访问dict中的属性并在谓词中使用该数据。我试着遵循swi-prolog文件,但无济于事......你们知道一种方式吗?

我试过这个来测试读取dict的内容,但是我收到"key_value expected, found a dict"错误。请不要把我烧死:

json包含:[{"task":"learnprolog","dayofmonth":2}]

  http_read_json_dict(Request, JSONIn,[json_object(term)]),
  X = JSONIn,
  format(user_output,"task is: ~p~n",[X.task]),
  JSONOut=JSONIn.

但我真的希望做类似的事情:

predicate(X):- X.dayofmonth==2,doSomething(X.task);doSomethingElse(X.task)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果没有与您正在使用的服务器设置类似的服务器设置,则不确定细节,但

?- open_codes_stream(`[{"task":"learnprolog","dayofmonth":"2"}]`,S),json_read_dict(S,[J]),close(S),write(J.dayofmonth).
2
S = <stream>(0x7f5f14304dd0),
J = _G15591{dayofmonth:"2", task:"learnprolog"}.

请注意 J

周围的方括号