2015-12-09 1 views
0

Я использую Groovy JsonBuilder для генерации JSON для отправки по HTTP. Моя проблема заключается в том, что он использует некоторые из ключей на карте.Groovy JsonBuilder, заглавные имена полей

Я даю ей объект этого класса:

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"} 

вместо

{"snpID":"rs444444"} 

(это упрощенный пример, демонстрирующий мою проблему)

+1

Где ваш код? –

+0

@tim_yates Это было бы полезно, не так ли. Я добавил строку, которая вызывает проблемы сейчас. Спасибо. – kiml42

+0

Ответ: Это не ... Groovy не использует буквы в записях. Они сохраняют любую капитализацию, которую они имеют в картах ... т.е.: 'assert new groovy.json.JsonBuilder ([[snps: [[snpID: 'rs444444']]]]). ToString() == '[{" snps ": [{" snpID ":" rs444444 "}]}] 'будет работать отлично в Groovy –

ответ

2

Изменение:

String getSNPID() { 
    return snpID; 
} 

к:

String getSnpID() { 
    return snpID; 
} 

И он будет работать, как вы ожидаете

+0

Можно также отметить, что он также ищет методы isSomething() и добавит логическую «что-то» переменную. – kiml42

+0

Да, это следует за спецификацией Java Beans для именования геттеров :-) –