2014-09-20 90 views
1

inbuild SerializeJSON摆脱阵列数据JSON如下:JSON响应问题

<cfset retData = '{"username":"#session.username#","items":#serializeJson(items)#}'> 

这样,在我得到的回应是:

{"username":"user1","items":["{\"s\": \"1\",\"f\": \"El\",\"m\": \"How are you\"}"]} 

我试图消除backslashes使用jsStringFormat,但没有帮助..

尝试过这样的:

<cfset retData = '{"username":"#session.username#","items":#serializeJson(jsStringFormat(items))#}'> 

但没有任何帮助,你们可以在正确的方向

+0

为什么单引号呢? – 2014-09-20 20:23:36

+0

单引号没有出现在被淘汰的json中,即使json是有效的,我在jsonlint.com上测试过 – voyeger 2014-09-20 20:25:32

回答

2

不要把它设置为一个字符串点。首先将其设为结构,然后致电serializeJSON()。根据这些数据,似乎items已经是一个结构。

<cfset refData = { 'username' = '#session.username#', 'items' = #items# } /> 
<cfset refData = serializeJSON(refData) /> 
+0

我试过了,但现在我收到一个错误:'消息\t无法将复杂对象类型数组转换为字符串 详细信息\t使用内置函数“serialize(Array):String”从数组创建字符串“。这里的项目是一个'Array' – voyeger 2014-09-21 07:10:07

+0

做一个'cfdump'的项目并将问题的屏幕截图发布。从输出看,“items”看起来像是一个包含一个结构的元素的数组。 – 2014-09-21 13:32:55

+0

此外,显示您使用的是抛出此错误的代码。我使用''来创建变量'items'并使用代码I提供的按预期工作。 – 2014-09-21 13:45:33

0

使用'deserializeJson'。 它可能会帮助你。

<cfset items = '["{\"s\": \"1\",\"f\": \"El\",\"m\": \"How are you\"}"]'> 
<cfset items = #deserializeJson(items)#> 
<cfset retData = '{"username":"user1","items":#serializeJson(items)#}'> 
<cfoutput > 
    #retData# 
</cfoutput>