如何删除哈希值的一部分?

迷宫 :

因此,我正在构建一组相互依赖的下拉列表,并构建了一个查询以获取产品类型,系列和模型对象的代码和描述。我使用嵌套的哈希图来讲述所有数据和对象。很好,因为我可以从哈希图中调用我需要的所有信息。但是,谈到REST API时,当我调用它们时,它将显示每个哈希图的所有嵌套信息。对于每个映射,我都有它的键,然后该值包括一个Code,Desc和下一个对象的hashmap。

因此,它就像:

Main hashmap
 - Key
 - value
    -> code
    -> desc
    -> product family hashmap
       -- key
       -- value
          --> code
          --> desc
          --> product model hashmap
              --- key
              --- value
                  ---> code
                  ---> desc  

我的主要问题是,当通过Web浏览器查看REST API时,如何从json格式中删除这些额外的哈希图?还是可以/我是否需要完全去除附加信息?

@Service
public class ProductDAOImpl implements ProductDAO {
    @PersistenceContext
    private EntityManager em;

    @Override
    public Map<String, ProductType> getProductTypeStructure() {
        HashMap<String, ProductType> prodTypes = new HashMap<>();
        Query q = em.createNativeQuery("<query>");


        List<Object[]> prodTypeEntities = q.getResultList();
        final String badData = "XX-BAD-XX";
        ProductType prodType = new ProductType(badData, "");
        ProductFamily prodFamily = new ProductFamily(badData, "");


        for(Object[] prodTypeEntity : prodTypeEntities) {


            if (prodTypeEntity[1] == null || prodTypeEntity[3] == null || prodTypeEntity[5] == null) {
                continue;
            }

            String prodTypeCd = prodTypeEntity[0].toString().toUpperCase();
            String prodTypeDesc = StringUtils.trimTrailingWhitespace(prodTypeEntity[1].toString()).toUpperCase(); 

            String prodFamilyCd = prodTypeEntity[2].toString().toUpperCase();
            String prodFamilyDesc = StringUtils.trimTrailingWhitespace(prodTypeEntity[3].toString()).toUpperCase(); 

            String prodModelCd = prodTypeEntity[4].toString().toUpperCase();
            String prodModelDesc = StringUtils.trimTrailingWhitespace(prodTypeEntity[5].toString()).toUpperCase(); 

            if(!prodType.getCode().equalsIgnoreCase(prodTypeCd)) {   
                prodType = new ProductType(prodTypeCd, prodTypeDesc); 
                prodType.setProdFamilies(new HashMap<String, ProductFamily>());
                prodTypes.put(prodType.getCode(), prodType);

                prodFamily.setCode(badData);
            }

            if(!prodFamily.getCode().equalsIgnoreCase(prodFamilyCd)) {
                prodFamily = new ProductFamily(prodFamilyCd, prodFamilyDesc);
                prodFamily.setProdModels(new HashMap<String, ProductModel>());
                prodType.getProdFamilies().put(prodFamily.getCode(), prodFamily);
            }
            prodFamily.getProdModels().put(prodModelCd, new ProductModel(prodModelCd, prodModelDesc));

        }    
        return prodTypes;
    }

}
tdranv:

如果我正确理解了您的问题,我认为这里可能是DTO对象。您仅将下拉列表可能需要的值添加到其中,然后从REST API中将其返回。

有关DTO 更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章