为啥intellij idea fastjson string放入对象后再取出的时候带有\
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥intellij idea fastjson string放入对象后再取出的时候带有\相关的知识,希望对你有一定的参考价值。
参考技术A 1.简单的手动放置键值对到JSONObject,然后在put到JSONArray对象里Listal=articleMng.find(f);System.out.println(al.size());HttpServletResponsehsr=ServletActionContext.getResponse();if(null==al)return;for(Articlea:al)System.out.println(a.getId()+a.getDescription()+a.getTitle());JSONArrayjson=newJSONArray();for(Articlea:al)JSONObjectjo=newJSONObject();jo.put("id",a.getId());jo.put("title",a.getTitle());jo.put("desc",a.getDescription());json.put(jo);trySystem.out.println(json.toString());hsr.setCharacterEncoding("UTF-8");hsr.getWriter().write(json.toString());catch(IOExceptione)e.printStackTrace();复制代码上述代码JSONArray是引入的org.json.JSONArray包而用net.sf.json包下JSONArray的静态方法:fromObject(list)这是网上大多是都是直接用此方法快捷转换JSON,但是对于Hibernate级联操作关联的对象,这个方法就会报错,如果将映射文件中的级联配置去掉就行了。另外对于list的要求就是其中的元素是字符串或对象,否则JSON不知道你想要的是什么数据。但是级联操作毕竟还是得存在,否则以后数据冗余、多余。解决方法就是:JSONArraysubMsgs=JSONArray.fromObject(object,config);JsonConfigconfig=newJsonConfig();config.setJsonPropertyFilter(newPropertyFilter()publicbooleanapply(Objectarg0,Stringarg1,Objectarg2)if(arg1.equals("article")||arg1.equals("fans"))returntrue;elsereturnfalse;);复制代码说明:提供了一个过滤作用,如果遇到关联的对象时他会自动过滤掉,不去执行关联关联所关联的对象。这里我贴出我hibernate中的配置关系映射的代码帮助理解:总结:1.JSONArraysubMsgs=JSONArray.fromObject(subMessages,config);其中config是可选的,当出现上面的情况是可以配置config参数,如果没有上面的那种需求就可以直接使用fromObject(obj)方法,它转换出来的就是标准的json对象格式的数据,如下:["attr","content",,]2.JSONObjectjTmsg=JSONObject.fromObject(themeMessage,config);这是专门用来解析标准的pojo,或者map对象的,pojo对象的格式就不用说了,map的形式是这样的"str","str"。-----------------------------------------------------------分割-------------------------------------------------------------------------------------------packagecom.nubb.bean;importjava.io.Serializable;publicclassPersonimplementsSerializableprivatestaticfinallongserialVersionUID=1L;privateStringname;privateintage;privateStringaddress;publicStringgetName()returnname;publicvoidsetName(Stringname)this.name=name;publicintgetAge()returnage;publicvoidsetAge(intage)this.age=age;publicStringgetAddress()returnaddress;publicvoidsetAddress(Stringaddress)this.address=address;packagecom.nubb.test;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.file.StandardOpenOption;importjava.util.ArrayList;importjava.util.List;importcom.alibaba.fastjson.JSON;importcom.nubb.bean.Person;publicclassJSONSerializerprivatestaticfinalStringDEFAULT_CHARSET_NAME="UTF-8";publicstaticStringserialize(Tobject)returnJSON.toJSONString(object);publicstaticTdeserialize(Stringstring,Classclz)returnJSON.parseObject(string,clz);publicstaticTload(Pathpath,Classclz)throwsIOExceptionreturndeserialize(newString(Files.readAllBytes(path),DEFAULT_CHARSET_NAME),clz);publicstaticvoidsave(Pathpath,Tobject)throwsIOExceptionif(Files.notExists(path.getParent()))Files.createDirectories(path.getParent());Files.write(path,serialize(object).getBytes(DEFAULT_CHARSET_NAME),StandardOpenOption.WRITE,StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING);publicstaticvoidmain(String[]args)Personperson1=newPerson();person1.setAddress("address");person1.setAge(11);person1.setName("amao");Personperson2=newPerson();person2.setAddress("address");person2.setAge(11);person2.setName("amao");Listlp=newArrayList();lp.add(person1);lp.add(person2);System.out.println(serialize(lp));输出:["address":"address","age":11,"name":"amao","address":"address","age":11,"name":"amao"] 参考技术B $sth->execute();$result = $sth->fetchAll();
print_r($result);
$dsn=null;
catch (PDOException $e)
echo 'Connection failed: ' . $e->getMessage();
$dsn=null;
以上是关于为啥intellij idea fastjson string放入对象后再取出的时候带有\的主要内容,如果未能解决你的问题,请参考以下文章