2016-06-29 3 views
-2

Значения в базе данных сохраняются как таковые :: {"rating1": "2", "rating2": "4", "rating3": "5", "rating4": "0" , «рейтинг5»: «0»}, Теперь мне нужно получить индивидуальные значения, такие как 2,4,5 и т. д.База данных запросов в Grails

Я сделал переменную «оценку» типа класса домена и попытался использовать как объект, используя (.), но он не работает и дает ошибку: : exception :: groovy.lang.MissingPropertyException: Нет такого свойства: rating1 для класса: java.lang.String

, я попробовал кастинг в массив и список (в виде массива , как ArrayList, как List) и т. д., но это тоже не работает. Кастинг в список дает исключение: exception :: org.codehaus.groovy.runtime.typehandling.GroovyCastException: невозможно передать объект '{"rating1": "2", "rating2": "4", "rating3": "5" , "rating4": "0", "rating5": "0"} 'с классом "java.lang.String" в класс' java.util.List '.

Доступ к «рейтингу [3]» дает ответ «a». Должен ли я использовать «рейтинг [11]» для получения значения 2 или существует какой-либо способ. Что может быть возможным решением. Пожалуйста помоги.

ответ

0

Вы сохраняете строку, поэтому у вас есть только операции с строками. Вам нужно разобрать эту строку, чтобы получить атрибуты по отдельности (возможно, JsonSlurper?).

рейтинг [знак-позиция] - плохая идея ИМО.

Возможно, переходные процессы (проверьте документы GORM) были бы полезны.

class YourDomain { 
    String yourField 
    String getRating1() { new JsonSlurper().parseText(yourField).rating1 } 
} 

Возможно. Полностью непроверенный, просто идея.

+0

Thankyou очень. Я попробовал вашу идею и нашел более простой способ использования JSON.parse (рейтинг), и он работает. – Prakash

Смежные вопросы