[英]Formatting JSON data to a excel file
我有一個json對象,可以從其他服務獲取它。 我希望將此json數據導出到excel文件中,以便將屬性“ access”的值附加為新列,並且該列包含true / false。 如果兩個記錄具有相同的“細節”屬性,並且“項目”和“訪問”屬性不同,則應將兩個記錄合並到excel中的單個記錄中,並且兩個屬性值都包含true。
例如:JSON對象
{"Approvals":
[
{"details":
{"ID": "A",
"object": "person"},
"access": "user",
"project":
{"ID": "Z",
"entityType": "domain"}
},
{"details":
{"ID": "B",
"object": "person"},
"access": "superuser",
"project":
{"ID": "Z",
"entityType": "domain"}
},
{"details":
{"ID": "A",
"object": "person"},
"access": "superuser",
"project":
{"ID": "Z",
"entityType": "domain"}
}
]
}
我想要這樣的Excel文件。
details/ID,details/object,user,superuser,project/ID,project/entityType
A ,person ,true,true ,Z ,domain
B ,person ,false,true ,Z ,domain
我曾考慮過在rails中使用send_file生成excel文件,但是如果屬性“ details”和“ project”的值相同,則無法考慮合並兩個記錄的算法。
我可以用jquery或ruby格式化數據,所以我在問題中同時添加了這兩個標簽。
盡管存在一些潛在的問題,但這應該可以幫助您入門:
data = {"Approvals" =>
[
{"details" =>
{"ID" => "A",
"object" => "person"},
"access" => "user",
"project" =>
{"ID" => "Z",
"entityType" => "domain"}
},
{"details" =>
{"ID" => "B",
"object" => "person"},
"access" => "superuser",
"project" =>
{"ID" => "Z",
"entityType" => "domain"}
},
{"details" =>
{"ID" => "A",
"object" => "person"},
"access" => "superuser",
"project" =>
{"ID" => "Z",
"entityType" => "domain"}
}
]
}
records = Hash.new do |hash, key|
hash[key] = [false, false]
end
data['Approvals'].each do |record|
detail_id = record['details']['ID']
detail_object = record['details']['object']
project_id = record['project']['ID']
project_type = record['project']['entityType']
key = [detail_id, detail_object, project_id, project_type]
index = record['access'] == 'superuser' ? 1 : 0
records[key][index] = true
end
records.each do |key, value|
p [key[0], key[1], value[0], value[1], key[2], key[3]]
end
假設:
您可以查找ruby / csv的文檔,了解如何生成CSV文件(或字符串),然后使用send_data
將其發送到瀏覽器
如果可以更改列的順序(將權限標志移到末尾),則可以使用
records.each do |key, value|
p key + value
end
代替。 請注意, p
只是將行打印到控制台,這是您要掛接以生成CSV的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.