Как я могу заставить свойство объекта выводиться в виде строки, когда возвращается как JSON - PullRequest
4 голосов
/ 21 мая 2010

Я храню значения цвета как HEX в моей базе данных, которая отображается через настройки ORM в CF9. Когда мои значения цвета полностью числовые (например, 000000), ColdFusion сериализует их как числа (например, 0.0), когда возвращается из моего CFC как JSON. Есть ли способ заставить эти столбцы / свойства быть сериализованными как строки?

Ответы [ 4 ]

1 голос
/ 21 мая 2010

Если вы не боитесь небольшой Java (~ 100 loc), вы можете передать свой запрос (coldfusion.sql.QueryTable - выполнить поиск в Google) в класс Java, и пусть Джексон преобразовать его в JSON для вас. Это очень быстро, и ваши типы данных остаются такими же, как и в вашей базе данных. Так что если у вас есть varchar с 0 в качестве значения, вы получите '0' обратно. Если у вас есть int, вы получите int. Нуль - это ноль, а пустые строки - пустые строки (хотя вы можете переопределить это, если хотите). Стоит использовать java, чтобы обойти все эти проблемы CF json.

1 голос
/ 21 мая 2010

1-й вариант

Вы можете попробовать это:

<cfset finalValue = " " & yourValue >

OR

<cfset finalValue = " #yourValue#" >

javaCast не работает, добавление завершающего пробела не работает.

http://www.mischefamily.com/nathan/index.cfm/2008/10/22/ColdFire-1295100-and-a-CF-to-JSON-Gotcha

http://www.ghidinelli.com/2008/12/19/tricking-serializejson-to-treat-numbers-as-strings

2-й вариант

Используя пользовательский метод вместо serializeJSON, на сайте Бена Наделя есть один, который вы можете настроить в соответствии со своими потребностями http://www.bennadel.com/blog/100--CF-JSON-My-Own-ColdFusion-Version-For-AJAX.htm.

0 голосов
/ 21 мая 2010

Если это цвета, вставьте хеш на передний план?

<cfset Value = "##" & Value />
0 голосов
/ 21 мая 2010

Хакерским быстрым решением было бы просто защитить ваши значения, скажем, конечным нечисловым символом перед сериализацией и транзитом. Это некрасиво, но CF не будет неявно преобразовано в 000000Z. Обрезать перед использованием, а затем найти более чистое решение для агрессивной "полезности" CF на досуге.

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