javascript - 展平 JSON 数据
问题描述
我正在尝试使用 Tabulator 创建票证列表,数据是通过 AJAX url 从票证系统作为 JSON 导入的,如下所示。
{
"results": [
{
"cc_emails": [
"ram@freshdesk.com",
"diana@freshdesk.com"
],
"fwd_emails": [],
"reply_cc_emails": [
"ram@freshdesk.com",
"diana@freshdesk.com"
],
"ticket_cc_emails": [
"ram@freshdesk.com",
"diana@freshdesk.com"
],
"fr_escalated": false,
"spam": false,
"email_config_id": null,
"group_id": 35000204315,
"priority": 1,
"requester_id": 35020281588,
"responder_id": 35004154466,
"source": 2,
"company_id": null,
"status": 2,
"subject": "Support Needed...",
"association_type": null,
"to_emails": null,
"product_id": null,
"id": 188261,
"type": null,
"due_by": "2019-09-17T15:12:07Z",
"fr_due_by": "2019-07-01T15:12:07Z",
"is_escalated": false,
"description": "<div>Details about the issue...</div>",
"description_text": "Details about the issue...",
"custom_fields": {
"cf_category": null,
"cf_firstname": null,
"cf_surname": null,
"cf_user_trainging": null,
"cf_email_address": null,
"cf_office_365": null,
"cf_start_date": null,
"cf_permission_level": null,
"cf_hardware_type": null,
"cf_additional_information_specsoftware_etc": null,
"cf_vpn_access_required": false,
"cf_securitydistribution_group_membership": null,
"cf_mapped_network_driveslogin_script": null,
"cf_printers": null,
"cf_phone_extension": null,
"cf_ddi": null,
"cf_phone_group_membership": null,
"cf_user_who_requires_the_equipment": null,
"cf_requirment_date": null,
"cf_correctclosureused": null,
"cf_location": "A1"
},
"created_at": "2019-06-24T15:11:47Z",
"updated_at": "2019-06-24T15:59:00Z",
"associated_tickets_count": null,
"tags": []
}
],
"total": 1
}
问题是“custom_fields”是主要 JSON 对象内的 JSON 对象,有没有办法将这些数据展平并将其显示为 Tabulator 中的所有一行?任何帮助表示赞赏?
我在 Tabulator 中的当前结果是它为 custom_fields 列返回 [object Object]。我希望能够看到行中的每个 custom_fields。
解决方案
处理嵌套数据
不需要展平对象,如果在字段名称中使用点表示法,Tabulator 可以处理列的嵌套数据:
var table = new Tabulator("#example-table", {
columns:[
{title:"Category", field:"custom_fields.cf_category"}, //link column to nested field
],
});
可以在Columns 文档中找到有关嵌套数据处理的完整详细信息
列分组
如果您愿意,您还可以使用列分组来显示字段是另一个属性的子集,例如我们可以像往常一样定义顶级列,然后添加列组来保存自定义列
var table = new Tabulator("#example-table", {
columns:[
{title:"Subject", field:"subject"}, //standard column
{title:"Priorty", field:"priority"}, //standard column
{title:"Custom", columns:[ //column group to hold columns in custom_fields property
{title:"Category", field:"custom_fields.cf_category"},
{title:"First Name", field:"custom_fields.cf_firstname"},
]},
],
});
完整的详细信息可以在列分组文档中找到
推荐阅读
- php - Laravel 使用了错误的用户提供者
- cancellationtokensource - 使用 CancellationToken 的正确方法是什么?
- batch-file - 查找和替换字符串,并使用批处理脚本覆盖同一文件
- sql - 休眠中的懒惰和渴望获取
- azure - Microsoft 自定义翻译和语音翻译 API
- python - 在模型 django 中使用返回数据
- rxjs - RxJS Observable:使用计数重试,然后使用通知程序
- linux - 将 java 版本结果附加到上面的行?
- jquery - 使用 JQuery 根据其 CSS 类将焦点设置在文本框上
- r - 从另一个长度不同的矩阵 R 映射矩阵内容