【问题标题】:Is there a way to convert Json file to XML by using groovy script on soapUI?有没有办法通过在soapUI上使用groovy脚本将Json文件转换为XML?
【发布时间】:2015-04-12 03:17:08
【问题描述】:

我需要将 Json 文件格式转换为 XML 格式,我已经看到很多网页甚至在 java 中都使用它我可以看到有很多人能够做到但我找不到非常棒。

我有一个像这样的文件:

{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}
} 

我希望能够直接转换为 XML,因为我们需要使用它来动态创建操作请求。

提前谢谢大家

【问题讨论】:

  • 如果您没有计划,Json 不会映射到 XML。你打算用 see also 块做什么?

标签: xml json groovy soapui


【解决方案1】:

她是可以帮助你的link

基于上面的链接,这里是完整的 groovy 脚本。

import net.sf.json.JSON
import net.sf.json.JSONSerializer
import net.sf.json.xml.XMLSerializer

String str = '''{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": { "GlossEntry": { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": { "para": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML"] }, "GlossSee": "markup" } } } } }'''
JSON json = JSONSerializer.toJSON( str )
XMLSerializer xmlSerializer = new XMLSerializer()
xmlSerializer.setTypeHintsCompatibility( false )
String xml = xmlSerializer.write( json )
System.out.println(xml)

顺便说一下,你需要下载library并把它添加到classpath,这里复制到SOAPUI_HOME/bin/ext目录下。

【讨论】:

  • 早上好,非常感谢你!它就像一个魅力,虽然字符串具有诸如“json_class="object""之类的值,例如“ 我可以通过替换字符串来管理它,但是你知道如果有办法将该字符串“格式化”为 xml?因为现在如果我将其保存到文件或其他任何文件中,我就会有一大行文本
【解决方案2】:

underscore-java 库包含静态方法 fromJson 和 toXml。

@Grab('com.github.javadev:underscore:1.32')
import com.github.underscore.U

def json = '''
{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}
}
'''

println U.toXml(U.fromJson(json))

输出:

<?xml version="1.0" encoding="UTF-8"?>
<glossary>
  <title>example glossary</title>
  <GlossDiv>
    <title>S</title>
    <GlossList>
      <GlossEntry>
        <ID>SGML</ID>
        <SortAs>SGML</SortAs>
        <GlossTerm>Standard Generalized Markup Language</GlossTerm>
        <Acronym>SGML</Acronym>
        <Abbrev>ISO 8879:1986</Abbrev>
        <GlossDef>
          <para>A meta-markup language, used to create markup languages such as DocBook.</para>
          <GlossSeeAlso>
            <element>GML</element>
            <element>XML</element>
          </GlossSeeAlso>
        </GlossDef>
        <GlossSee>markup</GlossSee>
      </GlossEntry>
    </GlossList>
  </GlossDiv>
</glossary>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2019-03-31
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多