【发布时间】:2011-06-26 00:23:16
【问题描述】:
我正在将使用 PyYaml 创建的 Yaml 传递给 SnakeYaml,而 SnakeYaml 似乎无法识别第一行之外的任何内容!存在并声明了 python/object。我已经在 Java 中设置了相同的对象。是否有一个示例将 loadAll 显示到对象数组中,其中对象类型被断言或分配?
好电话...我最初发帖时不在电脑旁。
这是我尝试使用 SnakeYaml 进入 Java 应用程序的 PyYaml 数据:
--- !!python/object:dbmethods.Project.Project {dblogin: kirtstrim7900, dbname: 92218kirtstrim_wfrogls,dbpw: 1234567895#froggy, preference1: '', preference2: '', preference3: '', projName: CheckPoint Firewall Audit - imp, projNo: 1295789430544+CheckPoint Firewall Audit - imp, projectowner: kirtcathey@sysrisk.com,result1label: Evidence, result2label: Recommend, result3label: Report, resultlabel: Response,role: owner, workstep1label: Objective, workstep2label: Policy, workstep3label: Guidance,worksteplabel: Procedure}
不仅仅是上面的一个实例,而是几个对象,所以需要在 SnakeYaml 中使用 loadAll.... 除非有人知道更好。
至于代码,这是我从 SnakeYaml 文档中获得的全部内容:
for (Object data : yaml.loadAll(sb.toString())) {
System.out.println(data.toString());
}
然后,抛出这个错误:
Exception in thread "AWT-EventQueue-0" Can't construct a java object for tag:yaml.org,2002:java/object: ......
Caused by: org.yaml.snakeyaml.error.YAMLException: Class not found: ......
从小代码 sn-p 中可以看出,即使没有提供所有这些信息,任何知道如何任意投射对象的答案的人都可以回答这个问题。
谢谢。
解析每个条目开头的两个感叹号(!!),现在我得到: 此处不允许映射值 在“”中,第 1 行,第 73 列:
作为一个错误。使用 YAML 的全部目的是减少与解析相关的编码。如果我出于某种原因不得不转身解析传入和传出的代码,那么 YAML 很糟糕!并且很乐意恢复 XML 或任何其他允许 python 中间件与 java 应用程序通信的东西。
【问题讨论】:
-
您应该发布不工作的数据以及您用来加载它的代码。
标签: java python yaml pyyaml snakeyaml