zoukankan      html  css  js  c++  java
  • JSON 字符串 与 java 对象的转换

    jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html

    // 引入相应的包 json-lib-2.2.3.jar

    对象转json:

            IorderIssue iorderIssue = new IorderIssue();
            
            SegmentInfo segmentInfo = new SegmentInfo();
            segmentInfo.setIorderIssue(iorderIssue);
            List<SegmentInfo> list = new ArrayList<SegmentInfo>();
            list.add(segmentInfo);
            iorderIssue.setSegmentInfos(list);
            
            List<ReqPassenger> list1 = new ArrayList<ReqPassenger>();
            ReqPassenger reqPassenger = new ReqPassenger();
            reqPassenger.setBusinessNo("111");
            reqPassenger.setIorderIssue(iorderIssue);
            list1.add(reqPassenger);
            iorderIssue.setReqPassengers(list1);
            
            
            JsonConfig conf = new JsonConfig();
            conf.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
            JSONObject object = JSONObject.fromObject(iorderIssue,conf);

    其中conf.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);可防止hibernate模式下的关联关系子对象中包含父对象造成死循环。

    json转对象:

    1.这个方法 JSONSerializer.toJava();

        /**
         * 创建订单
         * @param request
         * @param response
         * @return
         * @throws Exception
         */
        public ModelAndView createOrder(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            String requestStr = MyString.inputStream2String(request.getInputStream());
            
            JsonConfig filterNullConfig = new JsonConfig();//先把为null的属性过滤掉,防止下边的日期转换报错
            filterNullConfig.setJsonPropertyFilter(new PropertyFilter() {
                
                public boolean apply(Object clazz, String name, Object value) {
                    boolean isFilter = false;
                    if(value==null||"".equals(value)){
                        isFilter = true;
                    }
                    return isFilter;
                }
            });
            JSONObject requestJson = JSONObject.fromObject(requestStr,filterNullConfig);
        
    
            try{
                //日期转换
                String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss","yyyy-MM-dd","yyyy-MM-dd HH:mm"};    
                JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats)); 
    
                JsonConfig jsonConfig = new JsonConfig();
                jsonConfig.setRootClass(IorderIssue.class);
                Map<String, Class> classMap = new HashMap<String, Class>();
                classMap.put("iordersegments", IorderSegment.class);
                classMap.put("iorderpassengers", IorderPassenger.class);
                jsonConfig.setClassMap(classMap);
    
                IorderIssue iorderIssue = (IorderIssue)JSONSerializer.toJava(requestJson,jsonConfig);
                iorderIssue.setCreateTime(new Date());
                
                iorderIssue.setOrderType("01");//出票订单
                String isAduting = iorderIssue.getIsAduting();
                if("1".equals(isAduting)){
                    iorderIssue.setOrderStatus("000");//待审核
                }else if("0".equals(isAduting)){
                    iorderIssue.setOrderStatus("001");//待支付
                }
                
                IorderPriceIssue iorderPriceIssue = iorderIssue.getIorderPriceIssue();
                
    
            
                String orderId = iorderIssueManager.saveIorderIssue(iorderIssue, iorderPriceIssue,user);
                
                if(MyString.isNoEmpty(orderId)){//如果返回id,保存行程单信息
                    IorderJourneyInfo iorderJourneyInfo = iorderIssue.getIorderJourneyInfo();
                    iorderJourneyInfo.setBusinessId(orderId);
                    this.universalManager.save(iorderJourneyInfo);
                }
    
                
                MyJSONTools.responseWriteData(response, "OKφ"+orderId);
            }catch(Exception e){
                e.printStackTrace();
                MyJSONTools.responseWriteData(response, "error:"+e.getMessage());
            }
            return null;
        }


    2.

    jsonWorkflowBean是json字符串
    
    // 转换成Json对象
                JSONObject jsonObj = JSONObject.fromObject(jsonWorkflowBean);/*
                 * 在JSONObject.toBean的时候如果转换的类中有集合,可以先定义Map<String, Class> classMap
                 * = new HashMap<String,
                 * Class>();在classMap中put你要转换的类中的集合名,像:classMap.put("teachers",
                 * Teacher.class);然后在toBean()的时候把参数加上, 像:Student student=(Student)
                 * JSONObject.toBean(str, Student.class, classMap);
                 */
                Map<String, Class> classMap = new HashMap<String, Class>();
                classMap.put("inputDataList", InputDataBean.class);
                classMap.put("imageList", ImageBean.class);
                //将json转换成workflowBean
                WorkflowBean workflow = (WorkflowBean) JSONObject.toBean(jsonObj,
                        WorkflowBean.class, classMap);

    jsonarray转list:

            JSONObject requestJson = JSONObject.fromObject(requestStr);
            
            String reqPassengers = requestJson.getString("reqPassengers");
            
            Map<String, Class> classMap = new HashMap<String, Class>();
            classMap.put("reqPassengers", ReqPassenger.class);
            
            JSONArray jsonArray = JSONArray.fromObject(reqPassengers);
            
            List<ReqPassenger> list = (List<ReqPassenger>)JSONArray.toCollection(jsonArray);
            
           
  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/jinzhiming/p/4732046.html
Copyright © 2011-2022 走看看