[英]How to convert the excel file data into JSON format using GSON library?
Here I have a excel file named Merged.xlsx.这里我有一个名为 Merged.xlsx 的 excel 文件。 The figure of this is as:-
这个图如下:-
and I want this data to be displayed in a JSON format as:-我希望这些数据以 JSON 格式显示为:-
{
"Cars":[
{"SellerName":"govinda lamgade","Seller Address":"-Dallu,Kathmandu",...},
],
"Motorcycle":[
{Same as above},
]
}
So far I have got the result as到目前为止,我得到的结果为
{"rows":[{"cell":["Skoda Rapid On Sale And Exchange"," govinda lamgade ","- Dallu, Kathmandu","19-06-2020",1450000.0,"https://cdn.hamrobazaar.com/21...
which is not the one that I wanted.这不是我想要的。 The code is as:-
代码如下: -
String excelFilePath = "E:\\Merged.xlsx";
FileInputStream fileInputStream = new FileInputStream(excelFilePath);
Workbook workbook = new XSSFWorkbook(fileInputStream);
Sheet sheet = workbook.getSheetAt(0);
JsonObject jsonObject = new JsonObject();
JsonArray rows = new JsonArray();
Iterator<Row> rowIterator = sheet.iterator();
while(rowIterator.hasNext()){
Row row = rowIterator.next();
if(row.getRowNum() == 0) {
continue;
}
else{
JsonObject jRow = new JsonObject();
JsonArray cells = new JsonArray();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
cells.add(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
cells.add(cell.getStringCellValue());
break;
}
jRow.add("cell",cells);
rows.add(jRow);
}
jsonObject.add("rows", rows);
}
System.out.println(jsonObject.toString());
fileInputStream.close();
}
}
} }
Thank You谢谢你
You can do this as follows;您可以按以下方式执行此操作;
Assumptions:假设:
Important:重要的:
You have to give the expected json key
for each json value
as the column name in the excel sheet (eg:- put sellerName
as column name instead of Seller Name in the excel file) You have to give the expected json
key
for each json value
as the column name in the excel sheet (eg:- put sellerName
as column name instead of Seller Name in the excel file)
Required imports;所需进口;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import java.util.*;
You should get Cell data and put to a HashMap and then convert the HashMap to a JsonElement
;您应该获取 Cell 数据并放入 HashMap ,然后将 HashMap 转换为
JsonElement
;
String excelFilePath = "E:\\Merged.xlsx";
FileInputStream fileInputStream = new FileInputStream(excelFilePath);
Workbook workbook = new XSSFWorkbook(fileInputStream);
Sheet sheet = workbook.getSheetAt(0);
JsonArray carArray = new JsonArray();
List<String> columnNames = new ArrayList<>();
Gson gson = new Gson();
// Get column names
Row row = sheet.getRow(0);
for (Iterator<Cell> it = row.cellIterator(); it.hasNext(); ) {
Cell cell = it.next();
columnNames.add(cell.getStringCellValue());
}
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
row = rowIterator.next();
if (row.getRowNum()==0) {
continue;
}
Iterator<String> columnNameIterator = columnNames.iterator();
Iterator<Cell> cellIterator = row.cellIterator();
// Create a new map for the row
Map<String, Object> newCarMap = new HashMap<>();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String columnName = columnNameIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
newCarMap.put(columnName, cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
newCarMap.put(columnName, cell.getStringCellValue());
break;
}
}
// Convert the map to `JsonElement`
JsonElement carJson = gson.toJsonTree(newCarMap);
// Add the `JsonElement` to `JsonArray`
carArray.add(carJson);
}
// Add the `JsonArray` to `completeJson` object with the key as `Cars`
JsonObject completeJson = new JsonObject();
completeJson.add("Cars", carArray);
If you print the completeJson
;如果您打印
completeJson
;
{
"Cars": [
{
"price": 111111,
"imageUrl": "https://example_url_1",
"sellerAddress": "address_1",
"sellerName": "name_1",
"date": "12-07-2020"
},
{
"price": 222222,
"imageUrl": "https://example_url_2",
"sellerAddress": "address_2",
"sellerName": "name_2",
"date": "19-06-2020"
}
// rest of the car json objects will come here
]
}
Like wise you can create the Motorcycle
json array.同样,您可以创建
Motorcycle
json 阵列。 When adding MotorCycle JsonArray
to completeJson, put the key as Motorcycle
(or the key you prefer)将 MotorCycle
JsonArray
添加到 completeJson 时,将密钥作为Motorcycle
(或您喜欢的密钥)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.