PyYaml to SnakeYaml awteventquee0“无法为标签:yaml.org,2002年:java/对象:

2024-09-29 01:27:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我将用PyYaml创建的Yaml传递给SnakeYaml,SnakeYaml似乎不认识任何超出第一行的内容!!存在并声明python/object。我已经在Java中设置了相同的对象。有没有一个例子显示了一个loadAll到一个对象数组中的对象类型是断言或分配的?在


好主意。。。当我最初发帖的时候,他不在电脑旁。在

以下是PyYaml的数据,我正试图使用SnakeYaml进入Java应用程序:

--- !!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文档中得到的全部:

^{pr2}$

然后,抛出以下错误:

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: ......

正如您从小代码片段中看到的,即使没有提供所有这些信息,任何知道如何任意转换对象的答案的人都可能回答这个问题。在

泰铢。在

解析出两个感叹号(!!)在每个条目的开头,现在我得到: 此处不允许映射值 在“”中,第1行第73列:

作为一个错误。使用YAML的目的是减少与解析相关的编码。如果因为任何原因,我不得不反过来解析传入和传出的代码,那么YAML就糟透了!!并且很乐意恢复XML或其他任何允许python中间件与java应用程序对话的东西。在


Tags: 对象代码project应用程序object错误auditjava
2条回答

为了达到同样的效果,你可以:

  • 配置PyYAML以跳过标记(与注释“Convert objects to a dictionary of their representation”一模一样)
  • 配置SnakeYAML以创建所需的对象(与“projectData=gson.fromJson(mystr,ProjectData[].class);“)

如果你迷路了(在你说“糟糕”之前),你可以在相应的邮件列表中问一个问题。它可能会帮助你在将来找到一个合适的解决办法。在

固定的。山药很烂,所以不要用它。所有的yamsnal和yamsnal都不是从所有类型的yamsnal中派生出来的,但是什么样的yamsnal显然是从所有的yamsnal格式中派生出来的。在

而且,YAML的性能很差,JSON更简单、更容易实现。在我们的中间件所在的Python中(大多数处理都会发生),YAML的处理时间几乎是JSON的两倍!!在

如果您使用的是python2.6或更高版本,只需

 import json
    json_doc = json.dumps(projects, default=convert_to_builtin_type)
                    print json_doc
  def convert_to_builtin_type(obj):
     print 'default(', repr(obj), ')'
     # Convert objects to a dictionary of their representation
     d = { '__class__':obj.__class__.__name__,
          '__module__':obj.__module__,
          }
     d.update(obj.__dict__)
     return d

然后在Java客户端(加载)端,使用GSon这需要花费大量的脑力劳动和搜索才能弄清楚,因为网络上的所有示例实际上都是无用的。每页有500个广告的博主都会向你展示如何转换一个单一的、愚蠢的对象。上次我创建一个应用程序时,我使用了列表、数组或任何包含多个对象的东西!!在

^{pr2}$

完成了!简而言之,YAML很烂,而且使用JSON!!另外,http连接代码大部分是从这个网站剪下来的…现在我需要弄清楚https。在

相关问题 更多 >