• JSON与JAVA数据的相互转换


    import net.sf.json.JSONArray;
    import net.sf.json.JSONException;
    import net.sf.json.JSONObject;
    import net.sf.json.JSONSerializer;


    /**
    * json对象转换为java对象
    *
    *
    @throws JSONException
    */
    @Test
    public void jsonToJava(){
    String json="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
    //接收{}对象,此处接收数组对象会有异常
    if(json.indexOf("[")!=-1){
    json=json.replace("[", "");
    }
    if(json.indexOf("]")!=-1){
    json=json.replace("]", "");
    }
    JSONObject obj=new JSONObject().fromObject(json);
    SimInfo simInfo=(SimInfo)JSONObject.toBean(obj, SimInfo.class);
    System.out.println("obj: "+simInfo);
    System.out.println(simInfo.getAddTime());
    System.out.println(simInfo.getIccid());
    System.out.println(simInfo.getImei());
    System.out.println(simInfo.getImsi());
    System.out.println(simInfo.getPhoneType());
    System.out.println(simInfo.getRemark());
    System.out.println(simInfo.getTel());
    System.out.println(simInfo.getId());

    DaoFactory.getSimInfoDao().add(simInfo);
    }

    /**
    * 将json转换为java集合对象
    */
    @Test
    public void jsonToJavas(){
    String jsons="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}," +
    "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
    List<SimInfo> simInfos = getJavaCollection(new SimInfo(),jsons);
    System.out.println(simInfos.size());
    for(SimInfo simInfo:simInfos){
    System.out.println("addTime: "+simInfo.getAddTime());
    System.out.println("=========");
    }

    }

    /**
    * 封装将json对象转换为java集合对象
    *
    *
    @param <T>
    *
    @param clazz
    *
    @param jsons
    *
    @return
    */
    private <T> List<T> getJavaCollection(T clazz, String jsons) {
    List<T> objs=null;
    JSONArray jsonArray=(JSONArray)JSONSerializer.toJSON(jsons);
    if(jsonArray!=null){
    objs=new ArrayList<T>();
    List list=(List)JSONSerializer.toJava(jsonArray);
    for(Object o:list){
    JSONObject jsonObject=JSONObject.fromObject(o);
    T obj=(T)JSONObject.toBean(jsonObject, clazz.getClass());
    objs.add(obj);
    }
    }
    return objs;
    }

    /**
    * java对象转换为json对象
    *
    *
    @throws JSONException
    */
    @Test
    public void javaToJson(){
    SimInfo simInfo=new SimInfo();
    simInfo.setAddTime(UtilTool.dateToStr(new Date(), null));
    simInfo.setIccid("1111");
    simInfo.setImei("2222");
    simInfo.setImsi("3333");
    simInfo.setPhoneType(4);
    simInfo.setRemark("aaaa");
    simInfo.setTel("5555");
    //java对象转换为json对象
    String json=new JSONArray().fromObject(simInfo).toString();
    //json: [{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
    System.out.println("json: "+json);
    }


             

    jackson-core-asl-1.7.2.jar   

    jackson-mapper-asl-1.7.2.jar

                //将一个Java对象转换成JSON
    StringWriter writer = new StringWriter();
    ObjectMapper mapper = new ObjectMapper();
    mapper.writeValue(writer, simInfo);
    String json=writer.toString();

               

               

    基于json-lib.jar包Json实例程序
    1.JSONObject to DynaBean
    String json = "{name=\"json\",bool:true,int:1,double:2.2}";
    JSONObject jsonObject = JSONObject.fromObject(json);
    //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );
    Object bean = JSONObject.toBean(jsonObject);
    //Object bean1 = JSONSerializer.toJava(jsonObject);
    assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
    assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
    assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
    assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));

    2.JSONObject to JavaBean
    String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}";
    JSONObject jsonObject = JSONObject.fromObject(json);
    UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);
    System.out.println(jsonObject);
    理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
                 
    3.JSONArray to List
    String json = "[\"first\",\"second\"]";
    JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
    List output = (List) JSONSerializer.toJava(jsonArray);

    4.JSONArray to array
    String json = "[\"first\",\"second\"]";
    JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
    Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
    Object[] expected = new Object[] { "first", "second" };
    ArrayAssertions.assertEquals(expected, output);

    5.JSON 字符串 专为 JavaBean(刘慧斌demo 演示需要的jar包在附件里)

    String str="[{\"id\":\"328\",\"mestype\":\"inbox\"},{\"id\":\"327\",\"mestype\":\"inbox\"},{\"id\":\"279\",\"mestype\":\"already\"},{\"id\":\"278\",\"mestype\":\"already\"},{\"id\":\"277\",\"mestype\":\"already\"},{\"id\":\"310\",\"mestype\":\"inbox\"},{\"id\":\"308\",\"mestype\":\"inbox\"},{\"id\":\"305\",\"mestype\":\"inbox\"},{\"id\":\"304\",\"mestype\":\"inbox\"},{\"id\":\"303\",\"mestype\":\"inbox\"}]";
    JSONArray jsonArray=(JSONArray) JSONSerializer.toJSON(str);
    List list=(List)JSONSerializer.toJava(jsonArray);
    for (Object obj: list) {
    JSONObject jsonObject = JSONObject.fromObject(obj);
    MessageBean bean = (MessageBean) JSONObject.toBean(jsonObject, MessageBean.class);
    String id=bean.getId()+"";
    String type=bean.getMestype();
    System.out.println(id+" "+type);
    }
    System.out.println(list.size());




  • 相关阅读:
    CrackRTFwp 顺便讲讲如何在pe文件中看资源
    开启驱动生涯
    hgame week2 week3
    hgamefinal re peko-chain!
    docker化hbase并使用外部zookeeper
    docker化canal-adapter
    脚本
    ansible模块-user
    esxi克隆虚拟机
    confluence配置搭建
  • 原文地址:https://www.cnblogs.com/linjiqin/p/2181408.html
Copyright © 2020-2023  润新知