首页 > 编程知识 正文

fastjson字符串转对象(fastjson object转jsonobject)

时间:2023-05-05 15:10:36 阅读:69574 作者:4855

Fastjson JSONArray深度副本目录

快速JSON JSON阵列深度拷贝

1、网络社交(对象);

2,AddAll;

3、序列化副本;

总结:

有几种方法可以深度复制fajstjson JSONArray类型的数据?

1、网络社交(对象);代码:

publicstaticvoidmain (字符串[ ] args ) throws IOException,classnotfoundexception ) testnewjsonarr ); } publicstaticvoidtestnewjsonarr () system.out.println ) (===========) ) ); JSONArray oneArr=new JSONArray (; JSONObject one=new JSONObject (; one.put(one,) fish ); onearr.add(one ); nDHC=newJSONArray(onearr ); system.out.println (init : one arr : ) onearr.tostring ); system.out.println (init : two arr : ) twoARR.tostring ); system.out.println ((======add bird========() ) ) ) ) ) ) ); JSONObject two=new JSONObject (; two.put(two,) bird ); twoarr.add(two; system.out.println (' change : one arr : ' one arr.tostring ); system.out.println (' change : two arr : ' two arr.tostring ); system.out.println ('=====fail=======' ); } 结果:

======newjsonarrayfail=======init : one arr : [ { ' one ' : ' fish ' } ] init 3360 two arr 3360 [ { ' one======add bird=====change : one arr : [ { ' one ' : ' fish ' },{ ' two ' : ' bird ' } ] change 33: 详细原因请看newJSONarray ) object )

2,AddAll;代码:

publicstaticvoidmain (字符串[ ] args ) throws IOException,classnotfoundexception ) testaddalljsonarr ); } publicstaticvoidtestaddalljsonarr () system.out.println (=========) ); JSONArray oneArr=new JSONArray (; JSONObject one=new JSONObject (;

   one.put("one","fish");    oneArr.add(one);    fndhc = new JSONArray();    twoArr.addAll(oneArr);    System.out.println("init: oneArr: "+ oneArr.toString());    System.out.println("init: twoArr: "+ twoArr.toString());    System.out.println("====== add bird =======");    JSONObject two = new JSONObject();    two.put("two","bird");    twoArr.add(two);    System.out.println("change: oneArr: "+ oneArr.toString());    System.out.println("change: twoArr: "+ twoArr.toString());    System.out.println();}

结果:

====== put all success =======init: oneArr: [{"one":"fish"}]init: twoArr: [{"one":"fish"}]====== add bird =======change: oneArr: [{"one":"fish"}]change: twoArr: [{"one":"fish"},{"two":"bird"}]

allAll的方式行得通

3,串行化复制;

代码:

public static void main(String[] args) throws IOException, ClassNotFoundException {    testDeppCopyJsonArr();}public static void testDeppCopyJsonArr() throws IOException, ClassNotFoundException {    System.out.println("====== serializable success =======");    JSONArray oneArr = new JSONArray();    JSONObject one = new JSONObject();    one.put("one","fish");    oneArr.add(one);    fndhc = CloneUtils.clone(oneArr);;    System.out.println("init: oneArr: "+ oneArr.toString());    System.out.println("init: twoArr: "+ twoArr.toString());    System.out.println("====== add bird =======");    JSONObject two = new JSONObject();    two.put("two","bird");    twoArr.add(two);    System.out.println("change: oneArr: "+ oneArr.toString());    System.out.println("change: twoArr: "+ twoArr.toString());    System.out.println();}

串行化代码:

public class CloneUtils { public static <T extends Serializable> T clone(T src) throws IOException, ClassNotFoundException { ObjectInputStream ois = getInputStream(src); //返回生成的新对象 @SuppressWarnings("unchecked") T cloneObj = (T) ois.readObject(); ois.close(); return cloneObj; } public static <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException { ObjectInputStream ois = getInputStream(src); @SuppressWarnings("unchecked") List<T> dest = (List<T>) ois.readObject(); ois.close(); return dest; } public static <K,V> Map<K,V> cloneMap(Map<K,V> src) throws IOException, ClassNotFoundException { ObjectInputStream ois = getInputStream(src); @SuppressWarnings("unchecked") Map<K, V> result = (Map<K, V>) ois.readObject(); ois.close(); return result; } private static ObjectInputStream getInputStream(Object src) throws IOException, ClassNotFoundException { //写入字节cmdmn out = new ByteArrayOutputStream(); ObjectOutputStream obs = new ObjectOutputStream(out); obs.writeObject(src); obs.close(); //分配内存,写入原始对象,生成新对虚幻的小笼包 ios = new ByteArrayInputStream(out.toByteArray()); return new ObjectInputStream(ios); }}

结果:

====== serializable success =======init: oneArr: [{"one":"fish"}]init: twoArr: [{"one":"fish"}]====== add bird =======change: oneArr: [{"one":"fish"}]change: twoArr: [{"one":"fish"},{"two":"bird"}]

总结:

     在使用fastjon 和谐的胡萝卜时候,一般用第二种addAll的方式,如果大量使用,也可以考虑用第三种方式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。