Почему SerializeJSON возвращает int с .0? - PullRequest
2 голосов
/ 18 января 2011

следующий код:

<cfscript>
struct = StructNew();
struct.x = 1;
struct.y = 2;
</cfscript>

<cfoutput>#SerializeJSON(struct)#</cfoutput>

Результатом будет следующий вывод:

{"Y":2.0,"X":1.0}

Итак, мой вопрос: почему добавляется .0? и есть ли способ его удалить?

Ответы [ 4 ]

5 голосов
/ 12 декабря 2011

Лучшее, что я нашел для удаления .0 - это приведение с использованием функции Coldfusion javaCast:

struct.x = javaCast("int",1);
4 голосов
/ 18 января 2011

Добавление завершающего .0 к числам было известной «особенностью» способа, которым serializeJson был реализован в выпуске 8. Это исправлено / изменено в CF 9.01 на моей домашней машине XP, ваш код возвращает

{"Y":"2","X":"1"}
0 голосов
/ 19 января 2011

Два способа его удаления:

NumberFormat(x, "9")

<cfset x = 1.0> <cfset y = x * 1> <!--- will convert to an int --->

0 голосов
/ 18 января 2011

Я предполагаю, что реализация не самая лучшая: - / попробуйте оформить заказ: http://craigkaminsky.blogspot.com/2008/11/coldfusion-serializejson-gotcha.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...