java - used - what is json
Convertidor de Excel a Json en JAVA (1)
Estoy tratando de ocultar los datos de Excel en formato JSON. Y tengo éxito hasta la conversión de datos de Excel al leer las filas y columnas y configurar los datos en la lista y luego convertir esa lista al formato JSON.
Pero, me quedé en el siguiente nivel de JSON, donde el formato será como
Aquí está el código que usa iam, pero aún no se ha empezado a hacer que los datos anidados como datos de 3 columnas vengan en una matriz como la imagen de arriba.
Clase Pojo :
public class Products implements Serializable{
@Id
@Column(name="ID")
private String id;
@Column(name="PRODUCTID")
private String productId;
@Column(name="NAMEID")
private String nameId;
@Column(name="NAME")
private String name;
@Column(name="P_DESC")
private String desc;
@Column(name="DIMENSION")
private String dimension;
@Column(name="CATEGORY")
private String category;
@Column(name="SUB_CATEGORY")
private String subcategory;
@Column(name="CATEGORYID")
private String categoryId;
@Column(name="SUBCATEGORYID")
private String subcategoryId;
@Column(name="TAGS")
private String tags;
@Column(name="DESIGNER")
private String designer;
@Column(name="CURR")
private String curr;
@Column(name="POPULARITY")
private String popularity;
@Column(name="RELEVANCE")
private String relevance;
@Column(name="SHORTLISTED")
private String shortlisted;
@Column(name="LIKES")
private String likes;
@Column(name="CREATE_String")
private String createDt;
@Column(name="PAGEID")
private String pageId;
@Column(name="STYLENAME")
private String styleName;
@Column(name="STYLEID")
private String styleId;
@Column(name="PRICERANGE")
private String priceRange;
@Column(name="PRICEID")
private String priceId;
@Column(name="DEFAULT_PRICE")
private String defaultPrice;
@Column(name="DEFAULT_MATERIAL")
private String defaultMaterial;
@Column(name="DEFAULT_FINISH")
private String defaultFinish;
/* setters and getters */
}
Clase exceltoJsonConverter :
public static void uploadXLS(MultipartFile file, Document doc)
throws IOException {
Products products = new Products();
List<Products> productsList = new ArrayList<Products>();
logger.info("uploadExcel method");
HSSFWorkbook wb = null;
try {
wb= new HSSFWorkbook(file.getInputStream());
System.out.println("workbook: "+wb);
HSSFSheet sheet = wb.getSheetAt(0);
System.out.println("worksheet: "+sheet);
HSSFRow row;
Iterator<Row> iterator = sheet.iterator();
while (iterator.hasNext()) {
products = new Products();
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
Cell cell = cellIterator.next();
Iterator cells = nextRow.cellIterator();
cell=(HSSFCell) cells.next();
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
{
System.out.print(cell.getStringCellValue()+" ");
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
System.out.print(cell.getNumericCellValue()+" ");
}
else if(HSSFDateUtil.isCellDateFormatted(cell)){
Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
} else
{
//U Can Handel Boolean, Formula, Errors
}
products.setId(new DataFormatter().formatCellValue(nextRow.getCell(0)));
products.setProductId(new DataFormatter().formatCellValue(nextRow.getCell(1)));
products.setNameId(new DataFormatter().formatCellValue(nextRow.getCell(2)));
products.setName(new DataFormatter().formatCellValue(nextRow.getCell(3)));
products.setDesc(new DataFormatter().formatCellValue(nextRow.getCell(4)));
products.setDimension(new DataFormatter().formatCellValue(nextRow.getCell(5)));
products.setCategory(new DataFormatter().formatCellValue(nextRow.getCell(6)));
products.setSubcategory((new DataFormatter().formatCellValue(nextRow.getCell(7))));
products.setCategoryId(new DataFormatter().formatCellValue(nextRow.getCell(8)));
products.setSubcategoryId((new DataFormatter().formatCellValue(nextRow.getCell(9))));
products.setTags((new DataFormatter().formatCellValue(nextRow.getCell(10))));
products.setDesigner((new DataFormatter().formatCellValue(nextRow.getCell(11))));
products.setCurr((new DataFormatter().formatCellValue(nextRow.getCell(12))));
products.setPopularity((new DataFormatter().formatCellValue(nextRow.getCell(13))));
products.setRelevance((new DataFormatter().formatCellValue(nextRow.getCell(14))));
products.setShortlisted((new DataFormatter().formatCellValue(nextRow.getCell(15))));
products.setLikes((new DataFormatter().formatCellValue(nextRow.getCell(16))));
products.setCreateDt((new DataFormatter().formatCellValue(nextRow.getCell(17))));
products.setPageId((new DataFormatter().formatCellValue(nextRow.getCell(18))));
products.setStyleName((new DataFormatter().formatCellValue(nextRow.getCell(19))));
products.setStyleId((new DataFormatter().formatCellValue(nextRow.getCell(20))));
products.setPriceRange((new DataFormatter().formatCellValue(nextRow.getCell(21))));
products.setPriceId((new DataFormatter().formatCellValue(nextRow.getCell(22))));
products.setDefaultPrice((new DataFormatter().formatCellValue(nextRow.getCell(23))));
products.setDefaultMaterial((new DataFormatter().formatCellValue(nextRow.getCell(24))));
products.setDefaultFinish((new DataFormatter().formatCellValue(nextRow.getCell(25))));
Map<String, String> inputMap = new HashMap<String, String>();
inputMap.put("name", "Java2Novice");
inputMap.put("site", "http://java2novice.com");
productsList.add(products);
System.out.println(productsList);
// JSON CONVERTER
ObjectMapper mapper = new ObjectMapper();
System.out.println("productsList: "+products);
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String location = dateFormat.format(date);
System.out.println("productsList final: "+products);
// Convert object to JSON string and save into file directly
mapper.writeValue(new File("D://"+location+"mygubbi.json"), productsList);
// Convert object to JSON string and save into file directly
mapper.writeValue(new File("D://products.json"), productsList);
// Convert object to JSON string
String jsonInString = mapper.writeValueAsString(productsList);
System.out.println("JsonInString " +jsonInString);
// Convert object to JSON string and pretty print
jsonInString = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(products);
System.out.println("Final Json" +mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(products));
mapper.writeValue(new File("D://productsJson.json"), jsonInString);
}
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
}
}
Sugeridme cómo acercarme para obtener datos de múltiples columnas en formato Json como se muestra a continuación
UN GRAN Gracias de antemano ... Esperando que alguien pueda alegrarme hoy :)
Yo también enfrenté este tipo de escenario. Usted acaba de crear una clase con los campos que tiene en la segunda hoja. Por ejemplo:
public class Somename{
private String abc;
private String xyz;
// getters and setters
}
En tu clase pojo define una matriz
private Somename some[];
Vaya a la clase de convertidor exceltoJson. Intente crear un mapa Hash y obtenga los detalles que necesita en esa hoja. Eso es...
public static Map getImgs(HSSFWorkbook wb) {
Map hm1 = new HashMap<String, ArrayList<Somename>>();
HSSFSheet sheet = wb.getSheetAt(2);
Iterator<Row> iterator= sheet.iterator();
ArrayList<Somename> al = new ArrayList<Somename>();
while (iterator.hasNext()) {
Row row = iterator.next();
String sno = new DataFormatter().formatCellValue(row.getCell(0));
if (hm1.get(sno) == null) {
hm1.put(sno, new ArrayList());
}
String some= new DataFormatter().formatCellValue(row
.getCell(1));
Somename img1 = new Somename(some);
System.out.println(img1);
ArrayList r = (ArrayList) hm1.get(sno);
r.add(img1);
}
return hm1;
}
A continuación, agregue este uploadXLS,
ArrayList<Somename> al = (ArrayList<Somename>) hm1.get(id_prod);
Somename[] ar = new Images[al.size()];
products.setSome(al.toArray(imgfar));
Puede ser que esto te ayude