Why do I keep getting a reference to Object on the server while it works fine on the local system

The objects of my class are not converted to json, I think that it returns references to objects, although when executed locally it performs fine.

Here is the code

private def static sql private static List<ProductAlertsResponse> executeSelection(String query) { List<ProductAlertsResponse> prodAlerts=new ArrayList<ProductAlertsResponse>() sql.eachRow(query) { ProductAlertsResponse prodAlert=new ProductAlertsResponse((String)it.id,(String)it.name,(String)it.description,(String)it.active,(String)it.release_date) prodAlerts.add(prodAlert) } return prodAlerts } static main(args) { AppProperties.load() sql = Sql.newInstance("jdbc:oracle:thin:@"+AppProperties.get("hostname")+":"+AppProperties.get("port")+":"+AppProperties.get("service"), AppProperties.get("username"), AppProperties.get("password"),"oracle.jdbc.OracleDriver") List<ProductAlertsResponse> sqlResult=executeSelection("select ID,NAME,DESCRIPTION,ACTIVE,RELEASE_DATE from productinfo where ACTIVE='A'") def json = new groovy.json.JsonBuilder([response: sqlResult]) String response=json.toPrettyString() println "$response" } 

This returns me the answer

 { "response": [ { "active": "A", "release_date": "2011-09-23 00:00:00.0", "id": "1", "description": "Test", "name": "ABC7" }, { "active": "A", "release_date": "2012-01-19 00:00:00.0", "id": "5", "description": "Test1", "name": "ABC3" }, { "active": "A", "release_date": "2011-09-23 00:00:00.0", "id": "3", "description": "Test", "name": "ABC1" }, { "active": "A", "release_date": "2012-01-19 00:00:00.0", "id": "6", "description": "Test2", "name": "ABC2" } ] } 

When run on my server (struts and commons chains) it returns me the following json response (after removing the static)

 { "response": [ " com.est.dxclient.common.ProductAlertsResponse@67f797 ", " com.est.dxclient.common.ProductAlertsResponse@1e8f2a0 ", " com.est.dxclient.common.ProductAlertsResponse@c3d9ac ", " com.est.dxclient.common.ProductAlertsResponse@7d8bb " ] } 

Note: I am using groovy 1.8.0

Update server side code addition

 My server side class GetProductAlertsResponse implements Command { //Command is import org.apache.commons.chain.Command private def sql @Override public boolean execute(Context ctx) throws Exception { AppProperties.load() sql = Sql.newInstance("jdbc:oracle:thin:@"+AppProperties.get("hostname")+":"+AppProperties.get("port")+":"+AppProperties.get("service"), AppProperties.get("username"), AppProperties.get("password"),"oracle.jdbc.OracleDriver") List<ProductAlertsResponse> sqlResult=executeSelection("select ID,NAME,DESCRIPTION,ACTIVE,RELEASE_DATE from productinfo where ACTIVE='A'") def json = new groovy.json.JsonBuilder([response: sqlResult]) /*I am trying to debug the code here*/ println sqlResult.size() sqlResult.each{ println it.getName() } String response=json.toPrettyString() println "Inside commands $response" ctx.put(CSMContextParams.response,response) return false; } } 

On the console, it prints

 4 ABC7 ABC3 ABC1 ABC2 Inside commands [ " com.est.dxclient.common.ProductAlertsResponse@a63599 ", " com.est.dxclient.common.ProductAlertsResponse@156f14c ", " com.est.dxclient.common.ProductAlertsResponse@9ba632 ", " com.est.dxclient.common.ProductAlertsResponse@bc5245 " ] 
+4
source share
1 answer

This answer may help - Grails JSONBuilder .

Your server code may be using a different version of Grails, or Grails may not install the same between the local and server environments.

+1
source

Source: https://habr.com/ru/post/1392433/


All Articles