Long integers convert to scientific notation - ColdFusion

I am trying to convey a structure through a function, but the integers in it are converted to scientific notation.

Before deserialization:

{"businessUnitValidList":2003051509034372557922
  , "shortMessage":"Success"
  , "longMessage":"Request Completed Successfully."
  , "status":20001
} 

After deserialization:

 businessUnitValidList  2.00305150903E+021 

I tried converting it to a string, but it still gives me the same result. Any ideas?

Note. If businessUnitValidListthere are several values in mine , the numbers are displayed as they should.

EDIT

This is the current iteration of the code:

<cfloop array="#businessUnitArray#" index="i">

   <cfquery name="validatebusinessUnit" datasource="dbproduction">
       select doctorid from survey.dbo.clientLocationMap
       where clientbrandid = '#arguments.clientBrandid#'
       and clientLocation = '#i#'
   </cfquery>

   <cfif validatebusinessUnit.recordcount gt 0>
       <cfset businessUnitValidList = listAppend(businessUnitValidList,toString(validatebusinessUnit.doctorid),",")>
   <cfelse>
       <cfset businessUnitInValidList = listAppend(businessUnitInValidList,i,",")>
   </cfif>

</cfloop>

<cfif businessUnitInValidList neq ''>
    <cfset ResponseStruct['BusinessUnitCodes']['businessUnitMixResponse']['businessUnitInValidList'] = "#businessUnitInValidList#">
    <cfset ResponseStruct['BusinessUnitCodes']['businessUnitMixResponse']['businessUnitValidList'] = "#businessUnitValidList#">
    <cfreturn serializeJSON(ResponseStruct['BusinessUnitCodes']['businessUnitMixResponse'])>
<cfelse>
    <cfset ResponseStruct['BusinessUnitCodes']['businessUnitSuccess']['businessUnitValidList'] = "#businessUnitValidList#">
    <cfreturn serializeJSON(ResponseStruct['BusinessUnitCodes']['businessUnitSuccess'])>
</cfif>
+4
source share
3 answers

(too long for comments)

my code creates the correct result - deserializeJSON (), which causes the problem.

. JSON , . , , , . , . Carl Von Stetten, . Jedihomer Townend , , .

:

CFON JSON, CF ""... , CF , . , .

{..."businessUnitValidList":2003051509034372557922 } 

, . , , . , , , CF :

  • , .. java.lang.Double
  • 32- , .. java.lang.Integer

Integer - 2147483647. , , CF java.lang.. . -, Double . -, , cfoutput cfdump. , . , .

, CF11 JSON. , cfc query. , . , , this.serialization.serializeQueryAs = "struct";, , . CF11 , , BIGDECIMAL, VARCHAR. , CF , .

:

[ { "BUSINESSUNITVALIDLIST" : "2003051509034372557922",
    "LONGMESSAGE" : "Request Completed Successfully.",
    "SHORTMESSAGE" : "Success",
    "STATUS" : 20001
  } ]

:

qry = queryNew("");
queryAddColumn(qry, "businessUnitValidList", "varchar", ["2003051509034372557922"]);
queryAddColumn(qry, "shortMessage", "varchar", ["Success"]);
queryAddColumn(qry, "longMessage", "varchar", ["Request Completed Successfully."]);
queryAddColumn(qry, "status", "integer", [20001]);

json = serializeJSON(qry);
writeDump(deserializeJSON(json));

CF11 /, . , , .

, " ". , , , JSON; -)

/:

, , , ( dbms, ). , cfqueryparam . - , - , .

+3

ColdFusion JSON . Jedihomer Townend , CF , .

CF10, 11 2016 .

<cfscript>
a = {
  "businessUnitValidList":" 2003051509034372557922",
  "shortMessage":"Success",
  "longMessage":"Request Completed Successfully.",
  "status":20001
};
json = serializeJSON(a);
b = deserializeJSON(json);

writeDump(b);
</cfscript>

:

http://trycf.com/gist/70b86fbb57f752125f35/acf?theme=monokai

+6

java BigInteger . Coldfusion JavaCast , . , "" 19 .

. precisionEvaluate() .

The PrecisionEvaluate function allows you to calculate an arbitrary long decimal (BigDecimal precision). BigDecimal precision arithmetic accepts and generates decimal numbers of any length.

In this example, you can use the following:

<cfset ResponseStruct['BusinessUnitCodes']['businessUnitMixResponse']['businessUnitInValidList'] = "#precisionEvaluate(businessUnitInValidList)#">

+3
source

All Articles