【问题标题】:Getting data from JSON Structure从 JSON 结构中获取数据
【发布时间】:2016-06-28 12:20:10
【问题描述】:

我的 Coldfusion 组件正在返回 JSON 格式的数据。我正在尝试使用 Javascript 在我的前端访问该数据的值。有人可以帮助我了解如何访问“id”、“firs_name”和“last_name”等数据值吗?

我将以下数据存储在名为 tempData 的变量中。下面是我得到的 JSON 结构:

{ "COLUMNS" : [ "id",
      "FIRST_NAME",
      "LAST_NAME"
    ],
  "DATA" : [ [ "xxxx",
        "Jes",
        "Abr"
      ],
      [ "xxx2",
        "JESSIE",
        "YU"
      ]
    ]
}

下面是我的ajax调用:

$.ajax({
    type: "get",
    url: "GROUPSLIST.cfc",
    data: {
        method: "getNames",
        queryString: selectQuery
    },
    success: function(a) {
        alert(a);
    },
    error: function(a) {
        alert(a.responseText);
    }
});    

【问题讨论】:

  • 您是否搜索过诸如“解析 JSON”“访问 JSON”之类的内容...?例如,在相关列(此问题旁边)中,您有:stackoverflow.com/questions/4935632/…
  • 您问题中的 JSON 看起来可能来自 SerializeJSON(yourQuery) 调用。是这样吗?如果是这样,并且您使用的是 CF11,则可以使用 SerializeJSON(yourQuery,"struct") 它将返回一组更友好的 JSON。
  • 我相信我使用的是 8 或 9。我还尝试了搜索 Access Json,其中很多人都说要使用 tempData[0].id。这对我不起作用。我是 JSON 和 Coldfusion 的新手。
  • 返回数据的 CF 代码是什么样的?是否使用了 SerializeJSON 函数?
  • 不知道您使用的 CF 版本是一个基本问题。

标签: javascript json coldfusion


【解决方案1】:

我假设您的响应尚未被解析。您可以使用以下内容。

var tempData = '{"COLUMNS":["id","FIRST_NAME","LAST_NAME"],"DATA":[["xxxx","Jes","Abr"],["xxx2","JESSIE","YU"]]}';
//parse response if not already parsed 
var respObj = JSON.parse(tempData);
var columns = respObj['COLUMNS'];
//create a column map to index like following
var colMap = {};
for(i = 0; i < columns.length; i++){
  colMap[columns[i]] = i;
}
console.log(colMap)
var data = respObj['DATA'];
var text = ''
//use data[i][colMap['id']] to access data inside loop.
for(i = 0; i < data.length; i++){
  text += data[i][colMap['id']] + ':' +data[i][colMap['FIRST_NAME']] + ' ' + data[i][colMap['LAST_NAME']] + '<br>';  
}
document.getElementById('text').innerHTML = text;
&lt;div id="text"&gt;&lt;/div&gt;

【讨论】:

    【解决方案2】:

    这在使用数据库查询和按列访问时也可能会有所帮助(例如:employee_id,employee_name)

    第一步

    // return in serializeJSON format with true
    <cffunction name="employeelistJson" returntype="any" returnformat="JSON">
            <cfquery name="employeelist" datasource="yourdatasource">
                select * from employee
            </cfquery>
        <cfset setJson = #serializeJSON(employeelist,true)#>
        <cfreturn setJson />
    </cffunction>
    

    Step-2 按名称访问json数据

    success: function(response) {
         //must be in caps  
         alert(response.DATA['EMPLOYEEID']);
         alert(response.DATA['EMPLOYEENAME']);                              
        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多