gpt4 book ai didi

groovy - 如何将 groovy 表示转储到 YAML 并避免具有未标记的节点?

转载 作者:行者123 更新时间:2023-12-02 05:45:02 24 4
gpt4 key购买 nike

我想将以下结构转储到 YAML 文件中:

public class TestSuite {
String name
List testCases = []
}

其中测试用例列表是这个类:

class TestCase {
String name
String id
}

我希望它看起来像这样:

name: Carrier Handling and Traffic
testCases:
- name: Call setup by UE
id: DCM00000001

但它最终看起来像这样:

name: Carrier Handling and Traffic
testCases:
- !!com.package.path.TestCase
name: Call setup by UE
id: DCM00000001

我想这与 List 不是标记数据结构这一事实有关,但我无法弄清楚如何获取测试用例的名称来表示对象。提示?

最佳答案

是否将 TestSuite 定义为:

public class TestSuite {
String name
List<TestCase> testCases = []
}

让您更接近您想要的结果?虽然我自己没有使用 SnakeYaml...


编辑

有一些空闲时间,想出了这个独立的测试脚本:

@Grab( 'org.yaml:snakeyaml:1.10' )
import org.yaml.snakeyaml.Yaml
import org.yaml.snakeyaml.representer.Representer
import java.beans.IntrospectionException
import org.yaml.snakeyaml.introspector.Property

public class TestSuite {
String name
List<TestCase> testCases = []
}

class TestCase {
String name
String id
}

class NonMetaClassRepresenter extends Representer {
protected Set<Property> getProperties( Class<? extends Object> type ) throws IntrospectionException {
super.getProperties( type ).findAll { it.name != 'metaClass' }
}
}

TestSuite suite = new TestSuite( name:'Carrier Handling and Traffic' )
suite.testCases << new TestCase( name:'Call setup by UE', id:'DCM00000001' )

println new Yaml( new NonMetaClassRepresenter() ).dumpAsMap( suite )

打印:

name: Carrier Handling and Traffic
testCases:
- id: DCM00000001
name: Call setup by UE

关于groovy - 如何将 groovy 表示转储到 YAML 并避免具有未标记的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10395918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com