JSON与JAVA数据的相互转换

http://www.cnblogs.com/linjiqin/archive/2011/09/19/2181408.html

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());
原文地址:https://www.cnblogs.com/a757956132/p/4701587.html