我需要在我的应用程序中创建一个JSON响应,它将包含对象的等效+附加字段。以下是show()方法的样子:
def show(Long id) {
verifyUserLoggedIn()
ScBusinessProcess scBusinessProcess = ScBusinessProcess.get(id)
BusinessProcess businessProcess = BusinessProcessTranslator.toREST(scBusinessProcess)
businessProcess.questions = getQuestions(scBusinessProcess)
businessProcess.rate = getUserRate();
businessProcess.totalSteps = calculateTotalSteps(scBusinessProcess);
businessProcess.usersCurrentStep = 1;
respond businessProcess
}
toREST()方法将ScBusinessProcess域类对象复制到新的BusinessProcess Java对象中。接下来是我手动添加的字段。到目前为止,除了响应中没有显示的最后一个字段之外,一切都在工作(调试器声称新创建的对象包含字段及其传递的值)。这是我的toREST方法:
public static BusinessProcess toREST(ScBusinessProcess scBusinessProcess) {
if (scBusinessProcess == null) return null;
return new BusinessProcess(
scBusinessProcess.id(),
scBusinessProcess.getName(),
null,
scBusinessProcess.getDescription(),
scBusinessProcess.getPromoted(),
scBusinessProcess.getLikedCount(),
scBusinessProcess.getDislikedCount(),
0,
0,
0
);
}
以下是返回的JSON:
class "rest.BusinessProcess"
description "Business Process Description"
dislikes 0
id 1
likes 1
name "BusinessProcessOne"
promoted false
questions []
rate 1
totalSteps 0
缺少usersCurrentStep。可能是什么问题?如果我需要更多的代码说。此外,构建应用程序的Grails版本是3.1.9。
答案 0 :(得分:0)
BusinessProcess类的结构是什么?如果你有合适的编组员,你可以生成你喜欢的任何结构的JSON - 请参阅此链接以了解有关对象编组的更多信息 -
http://docs.grails.org/3.0.17/guide/webServices.html#objectMarshallers