Groovy JsonBuilder大写字段名
我正在使用Groovy JsonBuilder生成JSON以通过HTTP发送。 我的问题是它把地图上的一些键大写了 我给它一个这个类的对象:Groovy JsonBuilder大写字段名,json,groovy,jsonbuilder,Json,Groovy,Jsonbuilder,我正在使用Groovy JsonBuilder生成JSON以通过HTTP发送。 我的问题是它把地图上的一些键大写了 我给它一个这个类的对象: public class TestSNP { private String snpID; TestSNP(String input) { snpID = input.split("\\s+")[1]; } String getSNPID() { return snpID; } }
public class TestSNP {
private String snpID;
TestSNP(String input) {
snpID = input.split("\\s+")[1];
}
String getSNPID() {
return snpID;
}
}
这是失败的测试:
import groovy.json.*
class Test {
@Test
void jsonBuilderTest() {
def testSNP = new TestSNP("1 rs444444 2 3")
assert new groovy.json.JsonBuilder(testSNP).toString() == '{"snpID":"rs444444"}'
}
}
我明白了
而不是
{"snpID":"rs444444"}
(这是一个演示我的问题的简化示例)更改:
String getSNPID() {
return snpID;
}
致:
蒂姆·耶茨(tim_yates)说,这可能会很有用,不是吗。我已经添加了引起问题的线路。谢谢。答案是:它不。。。Groovy没有将条目大写。他们会保留地图上所有的资本。。。ie:
assert new groovy.json.JsonBuilder([[snps:[[snpID:'rs444444']]]])。toString()='[{“snps”:[{“snpID:'rs444444'}]}]'
在GroovyTanks中可以很好地工作,这确实有效。表明问题出在我的类上,比如:assert new groovy.json.JsonBuilder([[snps:[new domain.SNP(“1 rs444444 2 3”)]])。我来看看我是否能想出一个有同样问题的简化例子,省得把我的整个类放在这里。你的SNP
类中的字段(或getter)称为SNPID
或getSNPID
?是的,这正是问题所在。我在整理这个简化的例子的时候计算出来的。我没有考虑到它必须使用getter,因此猜测我在变量命名中使用的约定。可能还值得注意的是,它还查找isSomething()方法,并将添加布尔“something”变量。是的,它遵循了getter命名的Java Beans规范:-)
String getSNPID() {
return snpID;
}
String getSnpID() {
return snpID;
}